6 threads, random keys, compression=none, mean of 2 runs — Linux 6.19, xfs on NVMe, Intel i5-8500B (6 cores)
ondaDB benchmark suite — dataset: Linux / xfs · Apple M2 Ultra dataset → · raw CSV
geometric mean of (engine ÷ fastest) over every config × phase cell (35 cells); 1.00× = fastest everywhere
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| score (geomean) | 0.58 | 0.51 | 0.22 | 0.37 | 0.42 | 0.41 | 0.08 |
| cell wins | 13 | 13 | 2 | 3 | 4 | 0 | 0 |
ops/sec × (key size + value size) — how much payload each engine moves per second; makes the value-size sweep comparable
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 64 | 158 | 35 | 69 | 152 | 125 | 112 |
| 64 B / 512 B | 205 | 702 | 135 | 275 | 371 | 261 | 216 |
| 16 B / 1 KiB | 219 | 832 | 171 | 468 | 430 | 266 | 248 |
| 16 B / 4 KiB | 283 | 644 | 563 | 637 | 523 | 461 | 314 |
| 16 B / 16 KiB | 339 | 705 | 533 | 751 | 421 | 577 | 344 |
| 1 KiB / 256 B | 229 | 987 | 166 | 448 | 517 | 271 | 301 |
| 2 KiB / 256 B | 222 | 653 | 163 | 520 | 353 | 238 | 196 |
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 99 | 113 | 35 | 109 | 289 | 201 | 2 |
| 64 B / 512 B | 1,493 | 1,251 | 99 | 423 | 855 | 633 | 10 |
| 16 B / 1 KiB | 2,777 | 1,396 | 826 | 687 | 1,439 | 940 | 16 |
| 16 B / 4 KiB | 4,049 | 2,501 | 9,080 | 1,154 | 2,501 | 1,164 | 62 |
| 16 B / 16 KiB | 7,189 | 4,558 | 31,860 | 1,206 | 2,947 | 1,441 | 229 |
| 1 KiB / 256 B | 2,270 | 1,719 | 2 | 642 | 782 | 945 | 19 |
| 2 KiB / 256 B | 2,709 | 1,774 | 34 | 796 | 732 | 1,127 | 30 |
ops/sec — higher is better; whiskers span min–max across runs; the group leader is value-labeled
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 551,536 | 1,365,727 | 302,392 | 591,062 | 1,314,148 | 1,075,742 | 969,563 |
| 64 B / 512 B | 355,390 | 1,219,228 | 233,962 | 476,980 | 644,727 | 453,450 | 375,114 |
| 16 B / 1 KiB | 210,159 | 799,667 | 164,429 | 449,891 | 413,714 | 256,156 | 238,898 |
| 16 B / 4 KiB | 68,814 | 156,628 | 136,814 | 154,923 | 127,300 | 112,184 | 76,276 |
| 16 B / 16 KiB | 20,661 | 42,974 | 32,484 | 45,812 | 25,694 | 35,188 | 20,963 |
| 1 KiB / 256 B | 178,542 | 771,080 | 129,832 | 350,150 | 403,788 | 211,893 | 234,823 |
| 2 KiB / 256 B | 96,139 | 283,533 | 70,670 | 225,619 | 153,130 | 103,133 | 85,202 |
ops/sec — higher is better; whiskers span min–max across runs; the group leader is value-labeled
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 857,096 | 978,143 | 298,042 | 938,386 | 2,495,488 | 1,733,918 | 17,555 |
| 64 B / 512 B | 2,591,897 | 2,172,577 | 171,070 | 734,231 | 1,485,044 | 1,098,844 | 17,489 |
| 16 B / 1 KiB | 2,669,796 | 1,342,162 | 794,602 | 660,622 | 1,383,420 | 903,802 | 15,864 |
| 16 B / 4 KiB | 984,622 | 608,289 | 2,208,288 | 280,556 | 608,157 | 282,953 | 14,957 |
| 16 B / 16 KiB | 438,335 | 277,946 | 1,942,690 | 73,527 | 179,684 | 87,842 | 13,956 |
| 1 KiB / 256 B | 1,773,444 | 1,342,767 | 1,508 | 501,300 | 610,567 | 738,103 | 15,040 |
| 2 KiB / 256 B | 1,175,832 | 769,868 | 14,624 | 345,599 | 317,882 | 489,226 | 13,081 |
ops/sec — higher is better; whiskers span min–max across runs; the group leader is value-labeled
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 922,602 | 221,376 | 309,308 | 525,772 | 2,592,025 | 2,223,166 | 1,945,919 |
| 64 B / 512 B | 3,555,830 | 557,010 | 411,994 | 468,839 | 3,135,274 | 1,576,102 | 1,527,200 |
| 16 B / 1 KiB | 5,243,646 | 786,532 | 396,065 | 722,543 | 4,213,602 | 3,253,634 | 2,023,140 |
| 16 B / 4 KiB | 6,446,966 | 1,182,473 | 1,137,855 | 998,698 | 5,129,278 | 4,654,820 | 2,066,142 |
| 16 B / 16 KiB | 3,963,228 | 1,472,961 | 1,279,585 | 1,165,787 | 4,480,396 | 4,183,509 | 1,927,910 |
| 1 KiB / 256 B | 214,774 | 159,862 | 188,104 | 390,006 | 442,486 | 266,638 | 259,254 |
| 2 KiB / 256 B | 125,429 | 72,450 | 94,298 | 266,667 | 222,903 | 163,170 | 94,924 |
ops/sec — higher is better; whiskers span min–max across runs; the group leader is value-labeled
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 4,576,965 | 3,115,171 | 1,637,208 | 3,202,840 | 3,831,312 | 2,865,086 | 1,263,281 |
| 64 B / 512 B | 2,428,156 | 4,969,968 | 1,865,680 | 1,449,764 | 588,740 | 1,447,832 | 283,170 |
| 16 B / 1 KiB | 2,408,270 | 489,658 | 841,466 | 1,084,515 | 524,543 | 1,028,006 | 154,725 |
| 16 B / 4 KiB | 993,240 | 380,747 | 351,812 | 474,249 | 145,196 | 368,063 | 40,811 |
| 16 B / 16 KiB | 239,432 | 191,676 | 92,128 | 246,556 | 57,795 | 231,490 | 9,364 |
| 1 KiB / 256 B | 1,312,100 | 5,523,656 | 732,738 | 912,888 | 1,285,274 | 867,814 | 106,604 |
| 2 KiB / 256 B | 721,030 | 2,909,283 | 580,874 | 438,438 | 665,548 | 576,137 | 62,952 |
ops/sec — higher is better; whiskers span min–max across runs; the group leader is value-labeled
| ondaDB (Rust) | TidesDB (C) | fjall (Rust) | BadgerDB (Go) | wavesdb (Go) | RocksDB (C++) | surrealkv (Rust) | |
|---|---|---|---|---|---|---|---|
| 16 B / 100 B | 3,999,533 | 4,727,226 | 1,043,044 | 3,316,844 | 3,706,906 | 2,336,012 | 820,710 |
| 64 B / 512 B | 2,363,386 | 3,114,687 | 1,632,236 | 1,533,702 | 657,330 | 1,207,368 | 245,634 |
| 16 B / 1 KiB | 1,695,480 | 448,519 | 804,899 | 1,168,052 | 507,802 | 960,497 | 149,754 |
| 16 B / 4 KiB | 1,206,374 | 366,368 | 481,332 | 476,640 | 156,334 | 451,226 | 38,156 |
| 16 B / 16 KiB | 450,042 | 195,072 | 353,532 | 270,820 | 50,617 | 288,653 | 9,526 |
| 1 KiB / 256 B | 1,093,234 | 2,127,990 | 578,142 | 1,058,930 | 1,318,009 | 424,861 | 109,160 |
| 2 KiB / 256 B | 628,458 | 1,274,561 | 546,982 | 490,987 | 503,972 | 229,438 | 57,099 |