def timeit(*args): "Run the timeit.main function with args, catch and parse the output." import sys import re import timeit import cStringIO prev_stdout = sys.stdout sys.stdout = cStringIO.StringIO() timeit.main(args) out = sys.stdout.getvalue() sys.stdout = prev_stdout # Parse the output, and apply our own formatting match = re.search(r"(\d+\.\d*|\d+) usec", out) time = float(match.group(1)) print "%8.2f us: %s" % (time, args[-1]) if __name__ == "__main__": timeit("object()") timeit("list()") timeit("[]") timeit("int()") timeit("-s", "rng = range(32)", "[i for i in rng] # a list comp") timeit("-s", "class ClassicClass: pass", "ClassicClass() # create a classic class instance") timeit("-s", "class NewStyleClass(object): pass", "NewStyleClass() # create a new style class instance")