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

156 lines
4.1 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.

# 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相当ベンチマーク移植
- [ ] 実行時間・メモリ使用量比較
## データ収集自動化
### ベンチマークハーネス
```nyash
// 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()
}
}
```
### 統計収集スクリプト
```bash
#!/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の関係
### 主張の裏付け
- 定量的データ(ベンチマーク結果)
- 定性的分析(コード複雑度、保守性)
- 事例研究(実際の拡張例)