Skip to content

Instantly share code, notes, and snippets.

@mallyvai
Forked from gps/listbm.py
Created November 27, 2010 07:20
Show Gist options
  • Save mallyvai/717674 to your computer and use it in GitHub Desktop.
Save mallyvai/717674 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""
listbm.py
Created by Gopal Sharma on 2010-11-26.
Copyright (c) 2010 Gopal Sharma and Vaibhav Mallya. All rights reserved to this version, and all previous versions, of this file.
"""
import random
import time
import gc
sizes = [10 ** i for i in range(1, 6)]
N = 100
gen_rand_list_str = lambda size: "import random; items = random.sample( xrange(10*10), %s)" % size
average = lambda runs: sum(runs) / len(runs) # This is a mean. Can change to median or whatever you want.
def timer_wrapper(text, sizes, func_setup=gen_rand_list_str, str_stmt, num_reps):
print text
results = {}
for size in sizes:
setup = func_setup(size)
timer = timeit.Timer(stmt=stmt, setup=setup)
runs = timer.repeat(num_reps)
results[size] = average(runs)
print
return results
def generate_list_of_size(size):
return random.sample(xrange(10 ** 10), size)
def bm_index():
print "Index:"
results = {}
sample = generate_list_of_size(10000)
for size in sizes:
l = generate_list_of_size(size)
gc.collect()
start = time.time()
for s in sample:
try:
tmp = l.index(s)
except ValueError:
pass
end = time.time()
print size, end-start
results[size] = end-start
print
return results
def bm_count():
print "Count:"
reults = {}
sample = generate_list_of_size(10000)
for size in sizes:
l = generate_list_of_size(size)
gc.collect()
start = time.time()
for s in sample:
try:
tmp = l.count(s)
except ValueError:
pass
end = time.time()
print size, end-start
results[size] = end-start
print
return results
def bm_reverse():
print "Reverse:"
results = {}
for size in sizes:
l = generate_list_of_size(size)
gc.collect()
start = time.time()
l.reverse()
end = time.time()
print size, end-start
results[size] = end-start
print
return results
def bm_sort():
print "Sort:"
result = {}
for size in sizes:
l = generate_list_of_size(size)
gc.collect()
start = time.time()
l.sort()
end = time.time()
print size, end-start
results[size] = end-start
print
return result
def main():
results = {}
results['Sort'] = []
results['Reverse'] = []
results['Count'] = []
results['Index'] = []
for i in xrange(N):
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment