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 |