mirror of
https://github.com/unitedstates/congress-legislators.git
synced 2026-05-16 16:02:28 -04:00
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from timeit import Timer
|
|
|
|
class Benchmark(dict):
|
|
"""Benchmark a feature in different modules."""
|
|
|
|
def __init__(self,modules,title='',runs=3,reps=1000):
|
|
self.module_test = dict((m,'') for m in modules)
|
|
self.runs = runs
|
|
self.reps = reps
|
|
self.title = title
|
|
|
|
def __setitem__(self,module,(test_str,setup_str)):
|
|
"""Set the test code for modules."""
|
|
if module == 'all':
|
|
modules = self.module_test.keys()
|
|
else:
|
|
modules = [module]
|
|
|
|
for m in modules:
|
|
setup_str = 'import %s; import %s as np; ' % (m,m) \
|
|
+ setup_str
|
|
self.module_test[m] = Timer(test_str, setup_str)
|
|
|
|
def run(self):
|
|
"""Run the benchmark on the different modules."""
|
|
module_column_len = max(len(mod) for mod in self.module_test)
|
|
|
|
if self.title:
|
|
print self.title
|
|
print 'Doing %d runs, each with %d reps.' % (self.runs,self.reps)
|
|
print '-'*79
|
|
|
|
for mod in sorted(self.module_test):
|
|
modname = mod.ljust(module_column_len)
|
|
try:
|
|
print "%s: %s" % (modname, \
|
|
self.module_test[mod].repeat(self.runs,self.reps))
|
|
except Exception, e:
|
|
print "%s: Failed to benchmark (%s)." % (modname,e)
|
|
|
|
print '-'*79
|
|
print
|