「ん?大丈夫?」の一言がPython特化ハードコーディングを防いだ事例を記録。
Everything is Box哲学 vs 技術的正しさの綱渡りからの生還を分析。
- docs/research/paper-09-ai-collaboration-pitfall/ を新規作成
- incident-analysis.md: Lowerer特殊化危機の詳細分析
- ai-collaboration-lessons.md: AI協調開発の教訓
- intuition-in-engineering.md: エンジニアの直感の価値
- summary.md: 綱渡りからの生還まとめ
- 研究論文の1論文1フォルダ原則に従い整理
- Python統合関連の実装修正とビルド成功確認
🛡️ Generated with Claude Code
4.1 KiB
4.1 KiB
JIT論文評価方法論
評価の3本柱(Gemini先生提案)
1. 性能評価
- ベースライン: インタープリター、VM(JITなし)
- 比較対象: GraalVM/Truffle、V8(可能な範囲で)
- 測定項目:
- スループット(ops/sec)
- レイテンシ(関数呼び出し)
- メモリ使用量
- コンパイル時間
2. 回復力評価
- 故障注入実験:
- JIT内部での意図的panic
- メモリ不足状況
- 無限ループ検出
- 測定項目:
- フォールバック成功率
- 復旧時間
- 状態の一貫性
3. モジュール性評価
- 拡張性テスト:
- 新しい型の追加(Complex、Decimal等)
- バックエンド交換(Cranelift→LLVM)
- 新しい最適化パスの追加
- 測定項目:
- 変更必要行数
- インターフェース安定性
- ビルド時間への影響
実験計画
Phase 1: マイクロベンチマーク(実施済み)
✅ 基本演算(整数、浮動小数点) ✅ 制御フロー(分岐、ループ) ✅ PHIノード(値の合流)
Phase 2: アプリケーションベンチマーク(計画中)
- フィボナッチ数列(再帰 vs ループ)
- 素数判定(計算集約型)
- ソートアルゴリズム(配列操作)
- 簡易インタープリター(複雑な制御)
Phase 3: ストレステスト(計画中)
- 長時間実行(メモリリーク検証)
- 並行実行(マルチスレッド環境)
- エラー注入(ランダムfault)
Phase 4: 比較評価(計画中)
- Node.js相当ベンチマーク移植
- Python相当ベンチマーク移植
- 実行時間・メモリ使用量比較
データ収集自動化
ベンチマークハーネス
// benchmark_suite.nyash
static box BenchmarkRunner {
init { timer, results }
constructor() {
me.timer = new TimerBox()
me.results = new MapBox()
}
runBenchmark(name, func, iterations) {
local start = me.timer.now()
loop(i < iterations) {
func()
i = i + 1
}
local elapsed = me.timer.now() - start
me.results.set(name, elapsed / iterations)
}
exportResults() {
return me.results.toJson()
}
}
統計収集スクリプト
#!/bin/bash
# collect_stats.sh
echo "=== Nyash JIT Benchmark Suite ==="
# 環境変数設定
export NYASH_JIT_EXEC=1
export NYASH_JIT_THRESHOLD=1
export NYASH_JIT_STATS_JSON=1
# 各ベンチマーク実行
for bench in benchmarks/*.nyash; do
echo "Running: $bench"
./target/release/nyash --backend vm "$bench" > "results/$(basename $bench .nyash).json"
done
# 結果集計
python3 aggregate_results.py results/*.json > final_report.md
再現性の確保
環境記録
- Git commit hash
- Rustコンパイラバージョン
- OS/カーネル情報
- CPU/メモリ情報
- 環境変数設定
結果アーカイブ
results/
├── 2025-08-27/
│ ├── environment.json
│ ├── raw_data/
│ │ ├── fib_recursive.json
│ │ ├── fib_iterative.json
│ │ └── ...
│ └── summary_report.md
統計的妥当性
測定方法
- ウォームアップ: 最初の10回は除外
- 繰り返し: 最低100回実行
- 外れ値除去: 上下5%を除外
- 信頼区間: 95%信頼区間を算出
レポート形式
- 平均値 ± 標準偏差
- 中央値(外れ値の影響を排除)
- 最小値・最大値
- ヒストグラム(分布の可視化)
論文での提示方法
図表案
- 性能グラフ: ベンチマーク別の実行時間比較
- フォールバック率: エラー注入量とフォールバック成功率
- モジュール性: 機能追加時の変更行数比較
- アーキテクチャ図: 箱境界とJIT/VMの関係
主張の裏付け
- 定量的データ(ベンチマーク結果)
- 定性的分析(コード複雑度、保守性)
- 事例研究(実際の拡張例)