Files
hakorune/docs/research/paper-02-box-theory-jit/archives/evaluation-methodology.md
Moe Charm 7a0f9bd432 🚨 AI協調開発の危機回避事例を論文化(paper-09)
「ん?大丈夫?」の一言が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
2025-08-30 08:54:15 +09:00

4.1 KiB
Raw Blame History

JIT論文評価方法論

評価の3本柱Gemini先生提案

1. 性能評価

  • ベースライン: インタープリター、VMJITなし
  • 比較対象: 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

統計的妥当性

測定方法

  1. ウォームアップ: 最初の10回は除外
  2. 繰り返し: 最低100回実行
  3. 外れ値除去: 上下5%を除外
  4. 信頼区間: 95%信頼区間を算出

レポート形式

  • 平均値 ± 標準偏差
  • 中央値(外れ値の影響を排除)
  • 最小値・最大値
  • ヒストグラム(分布の可視化)

論文での提示方法

図表案

  1. 性能グラフ: ベンチマーク別の実行時間比較
  2. フォールバック率: エラー注入量とフォールバック成功率
  3. モジュール性: 機能追加時の変更行数比較
  4. アーキテクチャ図: 箱境界とJIT/VMの関係

主張の裏付け

  • 定量的データ(ベンチマーク結果)
  • 定性的分析(コード複雑度、保守性)
  • 事例研究(実際の拡張例)