With btree 0.16 just released, time to record results of speed-test. On-disk:

num_operations: 1000000
insert      : 389.370 s (  2569.4/s) CPU; 390.356 s (  2563.0/s) wall clock
lookup      : 441.060 s (  2268.2/s) CPU; 441.044 s (  2268.3/s) wall clock
lookup_range: 492.200 s (  2032.4/s) CPU; 492.180 s (  2032.5/s) wall clock
insert2     : 748.100 s (  1337.0/s) CPU; 748.703 s (  1336.0/s) wall clock
remove      : 786.870 s (  1271.1/s) CPU; 787.393 s (  1270.3/s) wall clock
remove_range: 255.700 s (  3913.6/s) CPU; 255.981 s (  3909.3/s) wall clock

In-memory:

num_operations: 1000000
insert      : 75.390 s ( 13296.1/s) CPU; 75.392 s ( 13295.4/s) wall clock
lookup      : 10.330 s ( 98522.2/s) CPU; 10.335 s ( 98452.4/s) wall clock
lookup_range: 40.860 s ( 24582.1/s) CPU; 40.862 s ( 24579.4/s) wall clock
insert2     : 84.090 s ( 11917.5/s) CPU; 84.098 s ( 11916.0/s) wall clock
remove      : 97.160 s ( 10311.4/s) CPU; 97.417 s ( 10283.9/s) wall clock
remove_range: 111.050 s (  9019.6/s) CPU; 111.104 s (  9015.0/s) wall clock

And codec-speed:

leaf_size    10000 loops, best of 3: 76.2 usec per loop
encode_leaf  10000 loops, best of 3: 162 usec per loop
decode leaf  1000 loops, best of 3: 661 usec per loop
encode_index 10000 loops, best of 3: 100 usec per loop
decode index 1000 loops, best of 3: 618 usec per loop

Commentary:

  • in-memory speeds are pretty nice!
  • on-disk speeds are not too bad, but need to be sped up a lot