summaryrefslogtreecommitdiff
path: root/speed-test
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-03-14 16:43:13 +1300
committerLars Wirzenius <liw@liw.fi>2010-03-14 16:43:13 +1300
commitd151f4a9d35c34997e69c4a459f721a0a9302cc9 (patch)
treee2ef7a559b7e514c35a6ad646dd01aa4ad8387b6 /speed-test
parent3d36307422ef977a396055bca24a81efdb293b67 (diff)
downloadlarch-d151f4a9d35c34997e69c4a459f721a0a9302cc9.tar.gz
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.
Diffstat (limited to 'speed-test')
-rwxr-xr-xspeed-test60
1 files changed, 27 insertions, 33 deletions
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__':