mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-28 21:44:21 +01:00
The default Rust hash map is slow for integer keys. Switch to FxHash
instead to reduce executed instructions for, for example, throughput
benchmark.
Before:
```
penberg@turing:~/src/tursodatabase/turso/perf/throughput/turso$ perf stat ../../../target/release/write-throughput --threads 1 --batch-size 100 --compute 0 -i 10000
Turso,1,100,0,106875.21
Performance counter stats for '../../../target/release/write-throughput --threads 1 --batch-size 100 --compute 0 -i 10000':
2,908.02 msec task-clock # 0.310 CPUs utilized
30,508 context-switches # 10.491 K/sec
261 cpu-migrations # 89.752 /sec
813 page-faults # 279.572 /sec
20,655,313,128 instructions # 1.73 insn per cycle
# 0.14 stalled cycles per insn
11,930,088,949 cycles # 4.102 GHz
2,845,040,381 stalled-cycles-frontend # 23.85% frontend cycles idle
3,814,652,892 branches # 1.312 G/sec
54,760,600 branch-misses # 1.44% of all branches
9.372979876 seconds time elapsed
2.276835000 seconds user
0.530135000 seconds sys
```
After:
```
penberg@turing:~/src/tursodatabase/turso/perf/throughput/turso$ perf stat ../../../target/release/write-throughput --threads 1 --batch-size 100 --compute 0 -i 10000
Turso,1,100,0,108663.84
Performance counter stats for '../../../target/release/write-throughput --threads 1 --batch-size 100 --compute 0 -i 10000':
2,838.65 msec task-clock # 0.308 CPUs utilized
30,629 context-switches # 10.790 K/sec
351 cpu-migrations # 123.650 /sec
818 page-faults # 288.165 /sec
19,887,102,451 instructions # 1.72 insn per cycle
# 0.14 stalled cycles per insn
11,593,166,024 cycles # 4.084 GHz
2,830,298,617 stalled-cycles-frontend # 24.41% frontend cycles idle
3,764,334,333 branches # 1.326 G/sec
53,157,766 branch-misses # 1.41% of all branches
9.218225731 seconds time elapsed
2.231889000 seconds user
0.508785000 seconds sys
```
Closes #3837