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:
@ -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 context(freelist + page_meta + segment pointers)
|
||||
- alloc/free/refill が全て tiny_c7_ultra.c 内で完結
|
||||
- 既存 allocator(v1/v3/pool)には依存しない(fallback 時を除く)
|
||||
|
||||
**C4/C5/C6 ULTRA**: 寄生型(既存 allocator 上の TLS cache)
|
||||
- 専用 segment は持たない
|
||||
- 既存 allocator(v1/v3/pool)に「寄生」して TLS キャッシュだけ追加
|
||||
- free 時に TLS push、alloc 時に TLS pop(キャッシュミス時は既存 allocator へ fallback)
|
||||
- minimal overhead で既存パスに統合可能
|
||||
|
||||
次フェーズ(PERF-ULTRA-FREE-OPT-1)では、これら ULTRA の free 側(TLS push パス)を統一された形に薄くする。
|
||||
|
||||
Reference in New Issue
Block a user