from UserDict import UserDict from string import lowercase import time def has_key_test(d): for c in lowercase: assert d.has_key(c) assert not d.has_key(c.upper()) def in_test(d): for c in lowercase: assert c in d assert c.upper() not in d def tester(callable, arg, rounds=10000): start = time.time() for _ in xrange(rounds): callable(arg) elapsed = round(time.time()-start, 3) print callable.__name__, arg.__class__.__name__, elapsed D = {} UD = UserDict() for i, c in enumerate(lowercase): D[c] = i UD[c] = i tester(has_key_test, D) tester(in_test, D) tester(has_key_test, UD) tester(in_test, UD)