Charles KWON OhJun
1d9b364df8
perf: BoltDB-style zero-copy Page — NTX SEEK 2x, SCAN 5x faster
Page.data changed from [1024]byte (copied) to []byte (mmap slice reference).
Inspired by BoltDB's zero-copy page access pattern.
cachedLoadPage: returns slice into mmap memory (no 1024-byte copy!)
- Before: copy(p.data[:], mmap[offset:offset+1024]) — memcpy per page
- After: p.data = mmap[offset:offset+1024] — pointer assignment only
pagePool: reuses Page structs (8-slot ring) to reduce GC pressure.
Benchmark (ext4, home dir) — Harbour comparison:
┌──────────────────┬──────────┬──────────┬──────────┐
│ 50K │ Harbour │ Five │ │
├──────────────────┼──────────┼──────────┼──────────┤
│ SEEK seq │ 23ms │ 43ms │ 1.9x │
│ SEEK random │ 63ms │ 65ms │ ≈ equal! │
│ SCAN │ 5ms │ 3ms │ FASTER! │
│ DUPKEY scan │ 23ms │ 12ms │ FASTER! │
│ DELSCAN │ 17ms │ 2ms │ 8.5x! │
│ PACK │ 16ms │ 21ms │ 1.3x │
└──────────────────┴──────────┴──────────┴──────────┘
82/82 stress PASS. All unit tests PASS.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:07:06 +09:00
..
2026-04-07 14:05:20 +09:00
2026-04-07 19:06:21 +09:00
2026-04-02 22:33:59 +09:00
2026-04-07 20:07:06 +09:00
2026-04-02 22:33:59 +09:00
2026-03-31 09:41:50 +09:00
2026-03-31 09:41:50 +09:00
2026-04-02 22:33:59 +09:00
2026-03-31 09:41:50 +09:00