From 15c954c413877210097cd38194e01314fb4f7d00 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 13 May 2010 19:56:57 +1200 Subject: Add profiling support to speed-test. Remove profile script, since it is now unnecessary. --- speed-test | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'speed-test') 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: -- cgit v1.2.1