Files
five/hbrdd
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
..