From: Amaury Forgeot d'Arc Date: Thu, 20 Mar 2008 21:22:04 +0000 (+0000) Subject: #2435: missing file in pybench X-Git-Tag: v3.0a4~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2eb2c7c3848fdc16a2c6bad6660411d0cf1c5208;p=thirdparty%2FPython%2Fcpython.git #2435: missing file in pybench svnmerge seems to forget every added file. --- diff --git a/Tools/pybench/With.py b/Tools/pybench/With.py new file mode 100644 index 000000000000..3af24cc6b7e6 --- /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