# Phase 63: FAST Profile-Fixed Build(compile-time 定数化で +5–10% を狙う) 背景: - Phase 60 / 62A が示した通り、alloc/free hot path は LTO で既にかなり最適化されており、**micro-opt は layout tax で負けやすい**。 - +5–10% を狙うには「同じ層を保ったまま、**実行時 gate を compile-time 定数に落として DCE**」が最も現実的。 - これは Box Theory に反しない:**“FAST専用の build profile 箱”**として分離し、Standard/OBSERVE は維持する。 目的: - FAST build でのみ、主要ノブを compile-time 定数化して分岐・lazy-init を消し、**+5–10%** を狙う。 - 学習層は存在を保持しつつ **FAST では FROZEN(常に false)**に落とす(Standard/OBSERVE は従来どおり)。 成功基準: - FAST build の Mixed 10-run mean で **+2.0% 以上 = GO** - build 変更は layout も動くため閾値を上げる(過去の -2% precedent を踏まえる)。 - ±2.0% = NEUTRAL(freeze) - -2.0% 以下 = NO-GO(revert) 計測の正: - `BENCH_BIN=./bench_random_mixed_hakmem_minimal scripts/run_mixed_10_cleanenv.sh` - profile は `MIXED_TINYV3_C7_SAFE`(Speed-first)を正にする --- ## Step 1: Build flag(SSOT) `core/hakmem_build_flags.h` に追加: - `HAKMEM_FAST_PROFILE_FIXED=0/1`(default 0) FAST 専用ターゲットで `-DHAKMEM_FAST_PROFILE_FIXED=1` を渡す。 --- ## Step 2: “固定すべき gate” のリスト化(まず 5〜8 個に限定) 候補(例): - `tiny_front_v3_enabled()` → 1 - `tiny_front_v3_lut_enabled()` → 1 - `tiny_front_v3_c7_ultra_enabled()` → 1 - `tiny_metadata_cache_enabled()` → 0(FAST正では不要なら) - `small_learner_v2_enabled()` / `learner_v7_enabled()` → 0 - `front_fastlane_enabled()` → 1(既にプリセットで 1) - `fastlane_direct_enabled()` → 1(既にプリセットで 1) ルール: - “FASTプリセットで常にON/OFF” が確定しているものだけを固定化する。 - それ以外は runtime gate を維持(符号反転を避ける)。 --- ## Step 3: 各 gate を build flag で定数化 方針: - `#if HAKMEM_FAST_PROFILE_FIXED` のときだけ `return true/false;` - それ以外は既存実装(ENV snapshot / lazy init)を維持 注意: - 新しい関数分割は増やさない(layout tax 回避)。 - `__builtin_expect` は “ENVで変わる条件” には付けない(Phase 19 の教訓)。 --- ## Step 4: FAST v4 ターゲット追加(別バイナリ) `Makefile`: - `bench_random_mixed_hakmem_fast_fixed` などの新ターゲットを追加 - `bench_random_mixed_hakmem_minimal` をベースに、追加 CFLAGS で `HAKMEM_FAST_PROFILE_FIXED=1` 例: - `make bench_random_mixed_hakmem_fast_fixed` - `BENCH_BIN=./bench_random_mixed_hakmem_fast_fixed scripts/run_mixed_10_cleanenv.sh` --- ## Step 5: A/B(10-run) A(baseline): - `bench_random_mixed_hakmem_minimal` B(treatment): - `bench_random_mixed_hakmem_fast_fixed` 判定: - GO: +2.0% 以上 - NEUTRAL: ±2.0% - NO-GO: -2.0% 以下 必須で併記: - mean / median / CV - `perf stat -e cycles,instructions,branches,branch-misses,iTLB-load-misses,dTLB-load-misses,cache-misses`(200M iters) --- ## Rollback - `HAKMEM_FAST_PROFILE_FIXED=0`(既定) - FAST v4 ターゲットは research として残してよいが、Standard/OBSERVE への影響を出さない。