summaryrefslogtreecommitdiff
path: root/speed-test
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-05-13 19:56:57 +1200
committerLars Wirzenius <liw@liw.fi>2010-05-13 19:56:57 +1200
commit15c954c413877210097cd38194e01314fb4f7d00 (patch)
tree46ee47448fdf34a3a9d0bb987f71d0faf54e45da /speed-test
parent84e04bb174f632b41bc090fc14e3808f66acb55c (diff)
downloadlarch-15c954c413877210097cd38194e01314fb4f7d00.tar.gz
Add profiling support to speed-test.
Remove profile script, since it is now unnecessary.
Diffstat (limited to 'speed-test')
-rwxr-xr-xspeed-test34
1 files changed, 27 insertions, 7 deletions
diff --git a/speed-test b/speed-test
index f80f2ed..6e5475d 100755
--- a/speed-test
+++ b/speed-test
@@ -26,6 +26,7 @@
# the lookups.
+import cProfile
import os
import random
import shutil
@@ -43,11 +44,21 @@ def measure(keys, func):
return end - start
+def profile(keys, func, basename):
+ def helper():
+ for key in keys:
+ func(key)
+ globaldict = globals().copy()
+ localdict = locals().copy()
+ cProfile.runctx('helper()', globaldict, localdict, '%s.prof' % basename)
+
+
def main():
location = sys.argv[1]
n = int(sys.argv[2])
+ do_profile = True if sys.argv[3] == 'yes' else False
- key_size = 8
+ key_size = 19
value_size = 128
node_size = 64*1024
@@ -73,16 +84,25 @@ def main():
# Measure inserts.
random.shuffle(keys)
value = 'x' * value_size
- insert_time = measure(keys, lambda key: tree.insert(key, value)) - looptime
-
+ if do_profile:
+ profile(keys, lambda key: tree.insert(key, value), 'insert')
+ else:
+ insert_time = measure(keys, lambda key: tree.insert(key, value))
+
# Measure lookups.
random.shuffle(keys)
- lookup_time = measure(keys, lambda key: tree.lookup(key)) - looptime
+ if do_profile:
+ profile(keys, tree.lookup, 'lookup')
+ else:
+ lookup_time = measure(keys, lambda key: tree.lookup(key)) - looptime
# Report
- print 'num_operations: %d' % n
- print 'insert: %.3f s (%.1f/s)' % (insert_time, n/insert_time)
- print 'lookup-time: %.3f s (%.1f/s)' % (lookup_time, n/lookup_time)
+ if do_profile:
+ print 'See insert.prof, lookup.prof for profiling data (try viewprof)'
+ else:
+ print 'num_operations: %d' % n
+ print 'insert: %.3f s (%.1f/s)' % (insert_time, n/insert_time)
+ print 'lookup-time: %.3f s (%.1f/s)' % (lookup_time, n/lookup_time)
# Clean up
if location: