1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import random
ENTRIES = 100
mydict = {}
for x in range(ENTRIES):
i = random.randint(1, ENTRIES)
mydict[i] = i
def try_catch():
i = random.randint(1, ENTRIES)
try:
v = mydict.get(i)
except KeyError:
pass
def in_dict():
i = random.randint(1, ENTRIES)
if i in mydict:
v = mydict[i]
def with_default():
i = random.randint(1, ENTRIES)
v = mydict.get (i, None)
if __name__ == '__main__':
from timeit import Timer
import operator
COUNT = 20
REPEAT = 100
names = ( 'try_catch', 'in_dict', 'with_default' )
results = list()
better = float(sys.maxint)
for name in names:
t = Timer('%s()' % name, "from __main__ import %s" % name)
try:
# ms = 1000 * t.timeit(number=COUNT) / COUNT
ms = 1000 * min(t.repeat(repeat=REPEAT, number=COUNT))/ COUNT
except:
t.print_exc()
sys.exit(1)
print "%-20s : %0.3f Ms" % (name, ms )
results.append((name, ms))
if ms < better:
better = ms
print '--- and the winner is: '
for item in sorted(results,
key=operator.itemgetter(1)):
name, ms = item
print "%-20s : %0.2f%%" % (name, ms/better ) |
Partager