diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-03-14 16:29:16 +1300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-03-14 16:29:16 +1300 |
commit | 3d36307422ef977a396055bca24a81efdb293b67 (patch) | |
tree | 430091c669cc6994ee5fe49a17b73c8693bdd378 /speed-test | |
parent | 7b59133cb4a823e3156d631cd347e937d8e55fe3 (diff) | |
download | larch-3d36307422ef977a396055bca24a81efdb293b67.tar.gz |
Add simple benchmark script for B-tree implementation.
Diffstat (limited to 'speed-test')
-rwxr-xr-x | speed-test | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/speed-test b/speed-test new file mode 100755 index 0000000..eb0ee14 --- /dev/null +++ b/speed-test @@ -0,0 +1,65 @@ +#!/usr/bin/python +# +# Excercise my btree implementation, for simple benchmarking purposes. + + +import random +import sys +import time + +import btree + + +def measure(keys, func): + start = time.clock() + for key in keys: + func(key) + end = time.clock() + return end - start + + +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, +}) + + +if __name__ == '__main__': + main() |