The benchmark doesn't accurately represent the real-world database performance because the dataset is too small (roughly half a gigabyte based on [1]?), meaning it fits into the page cache bypassing disk I/O.
I made a local change so that all Put benchmarks ran O(n) O(1) sized transactions and the results were quite different: Void was the slowest, followed by LMDB, Bold, LevelDB, then Badger.
I'd also wager the LMDB author would also (lovingly!) tell us we're holding it wrong
chronode|1 year ago
For example:
- BenchmarkVoidPut runs a single O(n) sized transaction
- BenchmarkLMDBPut runs a single O(n) sized transaction
- BenchmarkBadgetPut runs O(n) O(n) sized transactions (!!!)
I made a local change so that all Put benchmarks ran O(n) O(1) sized transactions and the results were quite different: Void was the slowest, followed by LMDB, Bold, LevelDB, then Badger.
I'd also wager the LMDB author would also (lovingly!) tell us we're holding it wrong
arandomusername|1 year ago