Files
hakorune/docs/private/roadmap/phases/phase-20.31/README.md
2025-10-31 23:16:27 +09:00

1.8 KiB
Raw Blame History

Phase20.31 — Optimizations: LLVM Opt + MIR Prepass + UserBox Birth

目的

  • ハコルネの実行性能を一段引き上げる。特に「ユーザーボックス生成」の遅さを改善し、代表ケースで C の約 80% を狙う。

スコープ(本フェーズ)

  • LLVM 最適化レベルの切替を CLI/ENV から統一管理llvmlite と native の両経路)。
  • ENV: HAKO_LLVM_OPT_LEVELalias: NYASH_LLVM_OPT_LEVEL)で 0〜3 を指定可能。llvmlite ハーネス / Python ビルダー双方で尊重する。
  • MIR プリ最適化安全セットを導入し、IR 形状を最適化に適した形へ整える。
  • ユーザーボックス生成birthの高速化: 形状キャッシュ+連続領域確保のファストパスを追加(実装計画)。

非スコープ(次フェーズ)

  • ネイティブ AOT ライブラリの内部 LLVM パス実装(libhako_llvm の本実装)。
  • 高度なループ最適化SLP/Vectorize など)は設計のみ(既定 OFF

性能目標(代表ケース)

  • C の 80% を目安±5% の揺れを許容)。
  • ベンチ対象(代表):
    • 算術ループi64+ 条件分岐if/phi
    • ユーザーボックスを N 回生成(小さな固定フィールド数: 2〜4→ 数値フィールドに書き込み → 破棄
    • 配列 push/pop を挟む軽いメモリアクセス

測定方針

  • AOTllvmliteで EXE を生成し、同等の C 実装と実行時間を比較3 回以上、最小値採用)。
  • 既定は O2、HAKO_LLVM_OPT_LEVEL=3 でも回帰しないこと(負例も併設)。

合格基準MVP

  • 代表ベンチで C の ≥ 80% を達成。
  • quick/integration が緑のまま(既定挙動は不変)。
  • ユーザーボックス生成の 2 桁% 改善(ベース比)。