import timeit list_test = "L[0]" list_setup = """ class List(list): pass L = List([0]) """ list_timer = timeit.Timer(list_test, list_setup) dict_test = "d[key]" dict_setup = """ class Dict(dict): pass d = Dict(key=0) key = intern("key") """ dict_timer = timeit.Timer(dict_test, dict_setup) set_test = "key in s" set_setup = """ class Set(set): pass key = intern("key") s = Set([key]) """ set_timer = timeit.Timer(set_test, set_setup) class_test = "meta(name, bases, attrs)" class_setup = """ gc.enable() # needed because all types have a cycle in type->tp_mro meta = type name = intern("SomeClass") bases = (object,) attrs = dict(__module__="irelevant") """ class_timer = timeit.Timer(class_test, class_setup) if __name__ == "__main__": print " list test:", min(list_timer.repeat()) print " dict test:", min(dict_timer.repeat()) print " set test:", min(set_timer.repeat()) print "class test:", min(class_timer.repeat(number=10000))