Phase PERF-ULTRA-FREE-OPT-1: C4-C7 ULTRA free 薄型化

- C4-C7 ULTRA free を pure TLS push + cold segment learning に統一
- C7 ULTRA free を同じパターンに整列(likely/unlikely + FREE_PATH_STAT_INC)
- C4/C5/C6 ULTRA は既に最適化済み(統一 legacy fallback 経由)
- base/user 変換を tiny_ptr_convert_box.h マクロで統一

実測値 (Mixed 16-1024B, 1M iter, ws=400):
- Baseline (C7 のみ): 42.0M ops/s, legacy=266,943 (49.2%)
- Optimized (C4-C7): 46.5M ops/s, legacy=26,025 (4.8%)
- 改善: +9.3% (+4M ops/s)

FREE_PATH_STATS:
- C6 ULTRA: 137,319 free + 137,241 alloc (100% カバー)
- C5 ULTRA: 68,871 free + 68,827 alloc (100% カバー)
- C4 ULTRA: 34,727 free + 34,696 alloc (100% カバー)
- Legacy: 266,943 → 26,025 (−90.2%, C2/C3 のみ)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Moe Charm (CI)
2025-12-11 20:49:39 +09:00
parent 753909fa4d
commit 11dc9d390a
3 changed files with 67 additions and 63 deletions

View File

@ -170,3 +170,21 @@ perf self% は baseline と同等。これは元の linked-list 実装も既に
1. refill path の最適化segment 取得の軽量化)
2. page_meta 管理の簡略化bitmap 化など)
3. C4-C7 ULTRA free 群5.41%)の最適化に移行
---
## 設計整理: C7 独立 vs C4/C5/C6 寄生
**C7 ULTRA**: 独立サブシステムtiny_c7_ultra.c に閉じた segment + TLS
- 専用の segment 管理2MiB Segment / 64KiB Page
- 独自の TLS contextfreelist + page_meta + segment pointers
- alloc/free/refill が全て tiny_c7_ultra.c 内で完結
- 既存 allocatorv1/v3/poolには依存しないfallback 時を除く)
**C4/C5/C6 ULTRA**: 寄生型(既存 allocator 上の TLS cache
- 専用 segment は持たない
- 既存 allocatorv1/v3/poolに「寄生」して TLS キャッシュだけ追加
- free 時に TLS push、alloc 時に TLS popキャッシュミス時は既存 allocator へ fallback
- minimal overhead で既存パスに統合可能
次フェーズPERF-ULTRA-FREE-OPT-1では、これら ULTRA の free 側TLS push パス)を統一された形に薄くする。