Skip to content

Instantly share code, notes, and snippets.

@riffm
Created June 22, 2009 11:48
Show Gist options
  • Save riffm/133935 to your computer and use it in GitHub Desktop.
Save riffm/133935 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import random
counts = (10,100,1000)
benchmark = []
for count in counts:
victims = ([], {})
for i in xrange(count):
victims[0].append((i, random.random()))
victims[1][i] = random.random()
benchmark.append(victims)
def dict_read():
dict_ = benchmark[1][1]
val = dict_[57]
def dict_read_10():
dict_ = benchmark[1][1]
for i in xrange(10):
val = dict_[i]
def dict_read_100():
dict_ = benchmark[1][1]
for i in xrange(100):
val = dict_[i]
def look_for(key, list_):
for k, v in list_:
if k == key:
return v
def list_read_10():
list_ = benchmark[0][0]
val = look_for(5, list_)
def list_read_100():
list_ = benchmark[1][0]
for k, v in list_:
if k == 57:
return v
def list_10_reads_100():
list_ = benchmark[1][0]
for i in xrange(100):
val = look_for(i, list_)
if __name__=='__main__':
from timeit import Timer
print "Dict lookup for 1 item"
t = Timer("dict_read()", "from __main__ import dict_read")
print "%.2f sec*10E-6/pass" % (1000000 * t.timeit(number=100000)/100000)
print "Dict lookup for 10 items in a loop"
t = Timer("dict_read_10()", "from __main__ import dict_read_10")
print "%.2f sec*10E-6/pass" % (1000000 * t.timeit(number=100000)/100000)
#print "%.2f sec/pass" % t.timeit(number=100000)/100000
print "Dict lookup for 100 items in a loop"
t = Timer("dict_read_100()", "from __main__ import dict_read_100")
print "%.2f sec*10E-6/pass" % (1000000 * t.timeit(number=100000)/100000)
#print "%.2f sec/pass" % t.timeit(number=100000)/100000
print "List lookup for 1 item from 10"
t = Timer("list_read_10()", "from __main__ import list_read_10")
print "%.2f sec*10E-6/pass" % (1000000 * t.timeit(number=100000)/100000)
print "List lookup for 1 items from 100"
t = Timer("list_read_100()", "from __main__ import list_read_100")
print "%.2f sec*10E-6/pass" % (1000000 * t.timeit(number=100000)/100000)
print "List lookup for 10 item from 100 in a loop"
t = Timer("list_10_reads_100()", "from __main__ import list_10_reads_100")
print "%.2f sec*10E-6/pass" % (1000000 * t.timeit(number=100000)/100000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment