Created
June 22, 2009 11:48
-
-
Save riffm/133935 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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