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

31 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase20.31 — Optimizations: LLVM Opt + MIR Prepass + UserBox Birth
目的
- ハコルネの実行性能を一段引き上げる。特に「ユーザーボックス生成」の遅さを改善し、代表ケースで C の約 80% を狙う。
スコープ(本フェーズ)
- LLVM 最適化レベルの切替を CLI/ENV から統一管理llvmlite と native の両経路)。
- ENV: `HAKO_LLVM_OPT_LEVEL`alias: `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 桁% 改善(ベース比)。