2025-12-16 15:01:56 +09:00
|
|
|
|
# CURRENT_TASK(Rolling)
|
2025-12-12 16:26:42 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
## 0) 今の「正」(Phase 39)
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
- **性能比較の正**: **FAST build**(`make perf_fast`)
|
|
|
|
|
|
- **安全・互換の正**: Standard build(`make bench_random_mixed_hakmem`)
|
|
|
|
|
|
- **観測の正**: OBSERVE build(`make perf_observe`)
|
|
|
|
|
|
- **スコアカード**: `docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md`
|
|
|
|
|
|
- **計測の正(Mixed 10-run)**: `scripts/run_mixed_10_cleanenv.sh`(`ITERS=20000000 WS=400`)
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
## 1) 現状(最新スナップショット)
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
- FAST v3: **56.04M ops/s**(mimalloc の **47.4%**)
|
|
|
|
|
|
- Standard: **53.50M ops/s**(mimalloc の **45.3%**)
|
2025-12-12 03:50:58 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
※詳細は `docs/analysis/PERFORMANCE_TARGETS_SCORECARD.md` を正とする(ここは要点だけ)。
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
## 2) 原則(Box Theory 運用)
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
- 変更は箱で分ける(ENV / build flag で戻せる)
|
|
|
|
|
|
- 境界は 1 箇所(変換点を増やさない)
|
|
|
|
|
|
- **削除して速くする(link-out / 大きい削除)は封印**(layout/LTO で符号反転する)
|
|
|
|
|
|
- ✅ compile-out(`#if HAKMEM_*_COMPILED` / `#if HAKMEM_BENCH_MINIMAL`)は許容
|
|
|
|
|
|
- ❌ Makefile から `.o` を外す / コード物理削除は原則しない(Phase 22-2 NO-GO)
|
|
|
|
|
|
- A/B は **同一バイナリ**でトグル(ENV / build flag)。別バイナリ比較は layout が混ざる。
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:10:36 +09:00
|
|
|
|
## 3) 次の指示書(Phase 40)
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:10:36 +09:00
|
|
|
|
**Phase 40: 残存 gate function の BENCH_MINIMAL 定数化(継続)**
|
|
|
|
|
|
|
|
|
|
|
|
Phase 39 で +1.98% 達成。FAST v3 perf profile で残存 gate function を調査した結果、以下を特定:
|
|
|
|
|
|
|
|
|
|
|
|
### 優先候補(HOT path):
|
|
|
|
|
|
|
|
|
|
|
|
1. **tiny_header_mode()** (`core/tiny_region_id.h:180-200`)
|
|
|
|
|
|
- **Hotspot**: `tiny_region_id_write_header` (4.56% self-time)
|
|
|
|
|
|
- **Pattern**: lazy-init (`static int g_header_mode = -1` + `getenv()`)
|
|
|
|
|
|
- **Default**: TINY_HEADER_MODE_FULL (0)
|
|
|
|
|
|
- **BENCH_MINIMAL 値**: 固定 FULL (0)(ヘッダー書き込み有効)
|
|
|
|
|
|
- **影響**: alloc hot path、毎回実行
|
|
|
|
|
|
- **期待**: +0.3~0.8%
|
|
|
|
|
|
|
|
|
|
|
|
2. **mid_v3_enabled()** (`core/box/mid_hotbox_v3_env_box.h:14-26`)
|
|
|
|
|
|
- **Hotspot**: free path で条件分岐(`g_free_dispatch_ssot` ブロック)
|
|
|
|
|
|
- **Pattern**: lazy-init (`static int g_enable = -1` + `getenv()`)
|
|
|
|
|
|
- **Default**: 0 (OFF)
|
|
|
|
|
|
- **BENCH_MINIMAL 値**: 固定 0
|
|
|
|
|
|
- **影響**: free path で毎回 check
|
|
|
|
|
|
- **期待**: +0.2~0.5%
|
|
|
|
|
|
|
|
|
|
|
|
3. **mid_v3_debug_enabled()** (`core/box/mid_hotbox_v3_env_box.h:78-89`)
|
|
|
|
|
|
- **Hotspot**: free path で debug log check
|
|
|
|
|
|
- **Pattern**: lazy-init (`static int g_debug = -1` + `getenv()`)
|
|
|
|
|
|
- **Default**: 0 (OFF)
|
|
|
|
|
|
- **BENCH_MINIMAL 値**: 固定 0
|
|
|
|
|
|
- **期待**: +0.1~0.3%
|
|
|
|
|
|
|
|
|
|
|
|
### 保留候補:
|
|
|
|
|
|
|
|
|
|
|
|
4. **g_free_dispatch_ssot** (`core/box/hak_free_api.inc.h:236-240`)
|
|
|
|
|
|
- Phase 39 で「保留」(互換性優先)
|
|
|
|
|
|
- Default: 0 (backward compat)
|
|
|
|
|
|
- 再検討: BENCH_MINIMAL で固定 1 にすべきか?
|
|
|
|
|
|
|
|
|
|
|
|
### 実装方針:
|
|
|
|
|
|
|
|
|
|
|
|
**Step 1**: tiny_header_mode() 単独で A/B test(最大 impact 候補)
|
|
|
|
|
|
**Step 2**: mid_v3_enabled() 単独で A/B test
|
|
|
|
|
|
**Step 3**: mid_v3_debug_enabled() を追加
|
|
|
|
|
|
**Step 4**: 累積効果確認(GO 閾値: +0.5%)
|
|
|
|
|
|
|
|
|
|
|
|
**GO 条件**: build-level 変更のため +0.5% 以上
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
## 4) 直近のログ(要点だけ)
|
2025-12-16 07:31:15 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
- Phase 24–34: atomic prune 累積 **+2.74%**(その後 diminishing returns)
|
|
|
|
|
|
- Phase 35-A: `HAKMEM_BENCH_MINIMAL=1`(gate prune)**GO +4.39%**
|
|
|
|
|
|
- Phase 36: FAST-only policy snapshot 最適化 **GO +0.71%**
|
|
|
|
|
|
- Phase 37: Standard TLS cache **NO-GO**(runtime gate の税が勝つ)
|
|
|
|
|
|
- Phase 38: FAST/OBSERVE/Standard 運用確立(scorecard + Makefile targets)
|
|
|
|
|
|
- Phase 39: FAST v3 gate 定数化 **GO +1.98%**
|
|
|
|
|
|
- 結果詳細: `docs/analysis/PHASE39_FAST_V3_GATE_CONSTANTIZATION_RESULTS.md`
|
2025-12-16 07:31:15 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
## 5) アーカイブ
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|
2025-12-16 15:01:56 +09:00
|
|
|
|
- 旧 `CURRENT_TASK.md`(詳細ログ)は `archive/CURRENT_TASK_ARCHIVE_20251216.md`
|
2025-12-16 05:35:11 +09:00
|
|
|
|
|