from __future__ import with_statement import timeit setup = """ class dummy_cm(): def __enter__(self): pass def __exit__(self, *args): pass cm = dummy_cm() """ cmd_with = """ with cm: pass """ cmd_call = """ cm.__enter__() try: pass finally: cm.__exit__() """ print "With statement timing:" timeit.main(["-r", "5", "-s", setup, cmd_with]) print "Direct call timing:" timeit.main(["-r", "5", "-s", setup, cmd_call])