2.8 KiB
2.8 KiB
Phase 5 E7: Frozen Box Prune(結果: NO-GO / 差し戻し)
Status(2025-12-14)
- 結果: NO-GO(削除後 -3% 台)
- 結論: 現状は “diet” を採用しない(凍結箱はコードとして保持)
- 詳細:
docs/analysis/PHASE5_E7_FROZEN_BOX_PRUNE_AB_TEST_RESULTS.md
背景(E5-2/E5-4 NEUTRAL + E6 NO-GO)
E5-2 / E5-4 / E6 の学び:
- “実験箱” を ENV gate で差し込むだけでも branch + code size の税が発生する
- それが勝ち箱の gains を相殺しやすい(特に Zen 系で miss rate が既に低い場合)
狙い(当初案):
- 凍結済みの研究箱を hot path から外し、baseline を “痩せさせる”
結果:
- ビルド差分 A/B で 有意な回帰が出たため、この方針は撤回する。
- (配置/最適化の二次効果が支配的で、単純な “branch 税回収” にならなかった)
Step 0: 対象(消してよい研究箱)
優先順:
- E6(ENV snapshot shape): NO-GO、hot path を肥大化させる
- E5-4(Malloc Tiny Direct): NEUTRAL、malloc wrapper に余計な分岐を足す
- E5-2(Header write-once): NEUTRAL、alloc hot path 側に分岐を足すなら同様に外す
Step 1: E6 の実装を削除(doc だけ残す)
core/box/env_snapshot_shape_env_box.hを削除core/front/malloc_tiny_fast.h/core/box/tiny_metadata_cache_hot_box.h/core/box/tiny_legacy_fallback_box.hの E6 分岐を削除(元に戻す)docs/analysis/PHASE5_E6_ENV_SNAPSHOT_SHAPE_AB_TEST_RESULTS.mdは残す(失敗の記録)
Step 2: E5-4 の実装を削除(doc だけ残す)
core/box/malloc_tiny_direct_env_box.h/core/box/malloc_tiny_direct_stats_box.hを削除core/box/hak_wrappers.inc.hの E5-4 追加分岐(malloc_tiny_direct_enabled())を削除docs/analysis/PHASE5_E5_4_MALLOC_TINY_DIRECT_AB_TEST_RESULTS.mdは残す
Step 3: A/B(削除前/削除後)
削除は ENV で切れないため “ビルド差分 A/B” になる。
- 削除前(現 HEAD)で 10-run:
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 20000000 400 1
- 削除後で 10-run:
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE ./bench_random_mixed_hakmem 20000000 400 1
判定:
- GO: mean +0.8% 以上(“diet” は小粒になりがちなので閾値を下げる)
- ±0.8%: NEUTRAL(消しても OK、保守性メリットで採用可)
- -0.8% 以下: 差し戻し(予想外の最適化阻害がある)
Step 4: 健康診断(必須)
scripts/verify_health_profiles.sh
Step 5: ドキュメント更新
CURRENT_TASK.md: E6/E5-4 を “凍結 → 実装削除(doc のみ保持)” と明記docs/analysis/PHASE5_E5_NEXT_INSTRUCTIONS.md: 次の芯を E7(diet)に更新