From d151f4a9d35c34997e69c4a459f721a0a9302cc9 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 14 Mar 2010 16:43:13 +1300 Subject: Make it possible to measure many fanout factors on the same run. Make report be a table, which is much more readable than a list of numbers. --- speed-test | 60 +++++++++++++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 33 deletions(-) (limited to 'speed-test') diff --git a/speed-test b/speed-test index eb0ee14..304a143 100755 --- a/speed-test +++ b/speed-test @@ -18,47 +18,41 @@ def measure(keys, func): return end - start +_need_header = True +def report(n, fanout, loop, insert, lookup, remove): + global _need_header + + if _need_header: + _need_header = False + sys.stdout.write('B-tree speed test (%d keys)\n' % n) + sys.stdout.write('%6s %6s %6s %6s\n' % + ('fanout', 'insert', 'lookup', 'remove')) + sys.stdout.write('%6d %6.3f %6.3f %6.3f\n' % + (fanout, insert, lookup, remove)) + + def main(): n = int(sys.argv[1]) - fanout = int(sys.argv[2]) - - # Create tree. - tree = btree.BTree(fanout) # Create list of keys. keys = ['%08d' % i for i in xrange(n)] # Calibrate. looptime = measure(keys, lambda key: None) - - # Insert keys. - random.shuffle(keys) - insert_time = measure(keys, lambda key: tree.insert(key, key)) - looptime - - # Lookup keys. - random.shuffle(keys) - lookup_time = measure(keys, lambda key: tree.lookup(key)) - looptime - - # Remove keys. - random.shuffle(keys) - remove_time = measure(keys, lambda key: tree.remove(key)) - looptime - - # Report - sys.stdout.write('''\ -fanout = %(fanout)d -num_keys = %(count)d -looptime = %(looptime)f seconds -insert_time = %(insert_time)f seconds -lookup_time = %(lookup_time)f seconds -remove_time = %(remove_time)f seconds -''' % { - 'count': n, - 'fanout': fanout, - 'looptime': looptime, - 'insert_time': insert_time, - 'lookup_time': lookup_time, - 'remove_time': remove_time, -}) + + for fanout in [int(i) for i in sys.argv[2:]]: + tree = btree.BTree(fanout) + + random.shuffle(keys) + insert_time = measure(keys, lambda key: tree.insert(key, key)) - looptime + + random.shuffle(keys) + lookup_time = measure(keys, lambda key: tree.lookup(key)) - looptime + + random.shuffle(keys) + remove_time = measure(keys, lambda key: tree.remove(key)) - looptime + + report(n, fanout, looptime, insert_time, lookup_time, remove_time) if __name__ == '__main__': -- cgit v1.2.1