import sys import cProfile as profile base_method = "for i in r: " methods = dict( get_method = "v = d.get('a')", index_method = """ try: v = d['a'] except KeyError: v = None""", get_var_method = "v = d.get(c)", index_var_method = """ try: v = d[c] except KeyError: v = None""", index_test_method = """ if 'a' in d: v = d['a'] else: v = None""", index_inline_test_method = """ v = None if 'a' not in d else d['a']""", index_var_inline_test_method = """ v = None if c not in d else d[c]""", index_var_test_method = """ if c in d: v = d[c] else: v = None""" ) def do_test(times): g = dict() l = dict(r=range(times), d={'a':0}, e={'a':0}, c='a') print 'base_method:', base_method print for methodName, method in methods.iteritems(): print methodName, ":", method profile.runctx(base_method + method, g, l) do_test(int(sys.argv[1]))