Files
hakorune/docs/research/paper-12-vm-stepping-stone/experiments/experiment-plan.md

129 lines
3.3 KiB
Markdown
Raw Normal View History

# 実験計画 - VM Stepping Stone論文
## 実験1: 開発効率の定量化
### 1.1 コミット履歴分析
```bash
# MIR実装期間
git log --after="2024-08-01" --before="2024-09-01" --oneline | grep -i mir | wc -l
# VM実装期間
git log --after="2024-09-01" --before="2024-11-01" --oneline | grep -i vm | wc -l
# LLVM実装期間
git log --after="2024-11-01" --before="2025-02-01" --oneline | grep -i llvm | wc -l
```
### 1.2 コード再利用率測定
- VM実装のコード行数
- LLVMで再利用されたパターン数
- 共通FFI/ABIコードの割合
## 実験2: デバッグ効率の測定
### 2.1 バグ修正時間の比較
- VM実装時のバグ修正時間Issue解決までの時間
- LLVM実装時のバグ修正時間VM比較による短縮効果
### 2.2 具体例: VInvokeバグ
- 問題: argc処理でLLVMが-1していた
- 解決時間: VMとの比較で即座に特定約30分
- 従来手法での推定時間: 2-3時間
## 実験3: パフォーマンス測定
### 3.1 ベンチマークプログラム
```nyash
// fibonacci.nyash
static box Main {
fib(n) {
if n < 2 {
return n
}
return me.fib(n - 1) + me.fib(n - 2)
}
main() {
return me.fib(35)
}
}
```
### 3.2 測定項目
- Interpreter実行時間
- VM実行時間
- LLVM実行時間
- メモリ使用量
### 3.3 プラグイン呼び出しオーバーヘッド
```nyash
// plugin_bench.nyash
static box Main {
main() {
local m = new MapBox()
local i = 0
loop(i < 1000000) {
m.set(i, i * 2)
local v = m.get(i)
i = i + 1
}
return 0
}
}
```
## 実験4: コード品質分析
### 4.1 重複コードの削減
- VM実装での重複コード
- LLVM実装での削減量
### 4.2 アーキテクチャの一貫性
- プラグインABIの統一度
- エラー処理の一貫性
## 実験5: 一般化可能性の検証
### 5.1 他言語への適用シミュレーション
- 小規模言語での検証
- 必要な前提条件の洗い出し
### 5.2 適用可能な言語の特徴
- プラグインシステムを持つ
- 統一的な型システム
- FFI/ABIが重要な役割を持つ
## データ収集スクリプト
### collect_metrics.sh
```bash
#!/bin/bash
# 開発メトリクス収集スクリプト
echo "=== Development Timeline ==="
echo "MIR commits:"
git log --after="2024-08-01" --before="2024-09-01" --oneline | grep -iE "(mir|MIR)" | wc -l
echo "VM commits:"
git log --after="2024-09-01" --before="2024-11-01" --oneline | grep -iE "(vm|VM)" | wc -l
echo "LLVM commits:"
git log --after="2024-11-01" --before="2025-02-01" --oneline | grep -iE "(llvm|LLVM)" | wc -l
echo "=== Code Statistics ==="
echo "VM implementation:"
find src/backend/vm* -name "*.rs" -exec wc -l {} + | tail -1
echo "LLVM implementation:"
find src/backend/llvm* -name "*.rs" -exec wc -l {} + | tail -1
echo "Shared runtime:"
find src/runtime -name "*.rs" -exec wc -l {} + | tail -1
```
## 期待される結果
1. **開発時間の短縮**: VM経由により全体の開発時間が30-40%短縮
2. **バグ修正の高速化**: デバッグ時間が平均60-70%削減
3. **コード品質向上**: 再利用により一貫性のあるコードベース
4. **性能**: LLVMはVMの10-50倍高速プログラムによる