벤치마크 거짓말 만드는 3 가지
인터넷의 거의 모든 가벼운 SQLite 벤치마크가 다음 중 적어도 하나로 틀려. 본인 측정에선 피해.
- Cold vs warm cache — 첫 run 은 디스크 read, 이후는 OS page cache hit. 어느 케이스 측정인지 결정 + 의도적으로 warm/cool.
- Per-statement transaction — autocommit write 가 row 마다 fsync 한 번. Transaction 없는 10k INSERT 루프는 SQLite write 속도 측정 X, 파일시스템 sync latency 측정.
- 작은 dataset — 100 row 면 모든 DB 빠름. 현실적 row count 로 측정; 이상적으로는 production 스케일의 multiple.
Principle: 어떤 PRAGMA 설정됐는지, dataset 모양이 뭔지, cache 가 warm 이었는지 안 적힌 벤치마크는 벤치마크 아냐. 항상 그 셋 문서화.