From 2eb2c7c3848fdc16a2c6bad6660411d0cf1c5208 Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Thu, 20 Mar 2008 21:22:04 +0000 Subject: #2435: missing file in pybench svnmerge seems to forget every added file. --- Tools/pybench/With.py | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 Tools/pybench/With.py diff --git a/Tools/pybench/With.py b/Tools/pybench/With.py new file mode 100644 index 0000000..3af24cc --- /dev/null +++ b/Tools/pybench/With.py @@ -0,0 +1,190 @@ +from __future__ import with_statement +from pybench import Test + +class WithFinally(Test): + + version = 2.0 + operations = 20 + rounds = 80000 + + class ContextManager(object): + def __enter__(self): + pass + def __exit__(self, exc, val, tb): + pass + + def test(self): + + cm = self.ContextManager() + + for i in xrange(self.rounds): + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + with cm: pass + + def calibrate(self): + + cm = self.ContextManager() + + for i in xrange(self.rounds): + pass + + +class TryFinally(Test): + + version = 2.0 + operations = 20 + rounds = 80000 + + class ContextManager(object): + def __enter__(self): + pass + def __exit__(self): + # "Context manager" objects used just for their cleanup + # actions in finally blocks usually don't have parameters. + pass + + def test(self): + + cm = self.ContextManager() + + for i in xrange(self.rounds): + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + cm.__enter__() + try: pass + finally: cm.__exit__() + + def calibrate(self): + + cm = self.ContextManager() + + for i in xrange(self.rounds): + pass + + +class WithRaiseExcept(Test): + + version = 2.0 + operations = 2 + 3 + 3 + rounds = 100000 + + class BlockExceptions(object): + def __enter__(self): + pass + def __exit__(self, exc, val, tb): + return True + + def test(self): + + error = ValueError + be = self.BlockExceptions() + + for i in xrange(self.rounds): + with be: raise error + with be: raise error + with be: raise error,"something" + with be: raise error,"something" + with be: raise error,"something" + with be: raise error("something") + with be: raise error("something") + with be: raise error("something") + + def calibrate(self): + + error = ValueError + be = self.BlockExceptions() + + for i in xrange(self.rounds): + pass -- cgit v0.12