summaryrefslogtreecommitdiff
path: root/speed-test
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-07-05 08:20:06 +1200
committerLars Wirzenius <liw@liw.fi>2010-07-05 08:20:06 +1200
commit0f3bbd666087a44dddc439f644c57eab2f1f3e1e (patch)
tree8632c13ac0855ed5935006c64fa6f5a668f5c102 /speed-test
parenteecf0ef317568c421c1697e7cdf0fea926a61f12 (diff)
downloadlarch-0f3bbd666087a44dddc439f644c57eab2f1f3e1e.tar.gz
Change how range lookups and removals are measured.
Before, lookup_range would be measured for a range that extended from each key to the end of keyspace. That is ridiculously large. Now we generate ranges that are 10 in length, starting at each key. This is rather more realistic.
Diffstat (limited to 'speed-test')
-rwxr-xr-xspeed-test17
1 files changed, 8 insertions, 9 deletions
diff --git a/speed-test b/speed-test
index 09c63a3..7a845e7 100755
--- a/speed-test
+++ b/speed-test
@@ -83,6 +83,10 @@ def main():
# Create list of keys.
keys = ['%0*d' % (key_size, i) for i in xrange(n)]
+ ranges = []
+ range_len = 10
+ for i in range(0, len(keys) - range_len):
+ ranges.append((keys[i], keys[i+range_len-1]))
# Calibrate.
looptime = measure(keys, lambda key: None, lambda: None)
@@ -106,14 +110,13 @@ def main():
lambda: None) - looptime
# Measure range lookups.
- random.shuffle(keys)
- max_key = max(keys)
+ random.shuffle(ranges)
if do_profile:
- profile(keys, lambda key: tree.lookup_range(key, max_key),
+ profile(ranges, lambda x: tree.lookup_range(x[0], x[1]),
lambda: None, 'lookup-range')
else:
- lookup_range_time = measure(keys,
- lambda key: tree.lookup_range(key, max_key),
+ lookup_range_time = measure(ranges,
+ lambda x: tree.lookup_range(x[0], x[1]),
lambda: None) - looptime
# Measure inserts into existing tree.
@@ -136,12 +139,8 @@ def main():
# Measure remove_range. This requires building a new tree.
keys.sort()
- ranges = []
- range_len = 10
for key in keys:
tree.insert(key, value)
- for i in range(0, len(keys), range_len):
- ranges.append((keys[i], keys[i+range_len-1]))
random.shuffle(ranges)
if do_profile:
profile(ranges, lambda pair: tree.remove_range(pair[0], pair[1]),