This is an open-source implementation of in-memory version of
Since it has been designed as a disk-based index, I applied several optimizations for it to deliver good performance in a main-memory system.
- Node size tuning: use small node sizes (e.g., 512 B or 1 KB) instead of page-access granularity.
- In-node search: apply linear search instead of binary search to leverage hardware prefetching.
- Synchronization mechanism: use optimistic latch coupling (OLC) instead of latch coupling.
$ mkdir bin
$ make
./bin/test ${num_data} ${num_threads}
runs insert and read operations.
./bin/range ${num_data} ${num_threads}
loads an index and runs range scans.