[pypy-svn] r23442 - pypy/dist/pypy/translator/microbench
ericvrp at codespeak.net
ericvrp at codespeak.net
Fri Feb 17 11:01:56 CET 2006
Author: ericvrp
Date: Fri Feb 17 11:01:55 2006
New Revision: 23442
Added:
pypy/dist/pypy/translator/microbench/test_exception.py
Log:
microbenchmarks for measuring exception handling performance
Added: pypy/dist/pypy/translator/microbench/test_exception.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/microbench/test_exception.py Fri Feb 17 11:01:55 2006
@@ -0,0 +1,170 @@
+
+# some of these tests might be identical and can be removed
+
+N = int(2**19 - 1)
+
+class MyException(Exception):
+ pass
+
+class MyException1(Exception):
+ pass
+
+class MyException2(Exception):
+ pass
+
+class MyException3(Exception):
+ pass
+
+#
+def test_try_except():
+ c = 0
+ n = N
+ while c < n:
+ try:
+ pass
+ except:
+ pass
+ c += 1
+
+#
+def test_try_except_else():
+ c = 0
+ n = N
+ while c < n:
+ try:
+ pass
+ except:
+ pass
+ else:
+ pass
+ c += 1
+
+#
+def test_try_except_finally():
+ c = 0
+ n = N
+ while c < n:
+ try:
+ pass
+ finally:
+ pass
+ c += 1
+
+#
+def test_instantiate_builtin_exception():
+ c = 0
+ n = N
+ while c < n:
+ IndexError()
+ IndexError()
+ IndexError()
+ IndexError()
+ IndexError()
+ c += 1
+
+#
+def test_instantiate_user_exception():
+ c = 0
+ n = N
+ while c < n:
+ MyException()
+ MyException()
+ MyException()
+ MyException()
+ MyException()
+ c += 1
+
+#
+def test_raise_builtin_exception():
+ c = 0
+ n = N
+ e = IndexError()
+ while c < n:
+ try:
+ raise e
+ except:
+ pass
+ c += 1
+
+#
+def test_raise_user_exception():
+ c = 0
+ n = N
+ e = MyException()
+ while c < n:
+ try:
+ raise e
+ except:
+ pass
+ c += 1
+
+#
+def test_except_specific_builtin_exception():
+ c = 0
+ n = N
+ e = IndexError()
+ while c < n:
+ try:
+ raise e
+ except ValueError:
+ pass
+ except:
+ pass
+ c += 1
+
+#
+def test_except_multiple_builtin_exception():
+ c = 0
+ n = N
+ e = IndexError()
+ while c < n:
+ try:
+ raise e
+ except (ValueError, OverflowError, ZeroDivisionError):
+ pass
+ except:
+ pass
+ c += 1
+
+#
+def test_except_specific_user_exception():
+ c = 0
+ n = N
+ e = MyException()
+ while c < n:
+ try:
+ raise e
+ except MyException1:
+ pass
+ except:
+ pass
+ c += 1
+
+#
+def test_except_multiple_user_exception():
+ c = 0
+ n = N
+ e = MyException()
+ while c < n:
+ try:
+ raise e
+ except (MyException1, MyException2, MyException3):
+ pass
+ except:
+ pass
+ c += 1
+
+#
+def test_reraise():
+ c = 0
+ n = N
+ e = IndexError()
+ while c < n:
+ try:
+ try:
+ raise e
+ except:
+ raise
+ except:
+ pass
+ c += 1
More information about the Pypy-commit
mailing list