Files
hakorune/docs/papers/archive/mir15-fullstack/evaluation-plan.md
Moe Charm e2e25f6615 論文フォルダ整理: ChatGPT5提案による2本立て構造に再編成
- 論文A: MIR13命令とIR設計 (コンパイラ・PL実装者向け)
  - ArrayGet/Set → BoxCall統合による50%削減
  - IC/AOT/TypedArray最適化
  - Everything is Box哲学のMIR実装

- 論文B: Nyash言語と実行モデル (言語理論・分散システム向け)
  - init/fini対称性メモリ管理
  - P2P Intentモデル
  - 多層実行アーキテクチャ(Interpreter→VM→JIT→AOT→WASM)

既存のmir15-fullstack/unified-lifecycleはarchiveに移動
2025-09-03 03:06:24 +09:00

171 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.

# 評価計画
## 🎯 評価の目的
1. **実証**: MIR15で本当にGUIアプリが動くことを証明
2. **性能**: 最小命令セットでも実用的な性能を達成
3. **等価性**: VM/JIT/AOT/WASMが同一動作することを検証
4. **拡張性**: 新機能追加の容易さを実証
## 📊 評価軸ChatGPT5提案ベース
### 1. 命令カバレッジ分析
```yaml
実験内容:
- GUIデモアプリ実行時の命令使用頻度測定
- 各命令の使用率をヒストグラムで可視化
期待結果:
- 全15命令が実際に使用される
- BoxCall/ExternCallが高頻度Box哲学の実証
```
### 2. バックエンド直交性検証
```yaml
実験内容:
- 同一プログラムをVM/JIT/AOT/WASMで実行
- 出力差分の検証(ログ、ハッシュ値)
測定項目:
- 実行結果の一致率: 100%期待
- 性能差: VM基準で±50%以内
```
### 3. GUI動作実証
```yaml
対象OS:
- Ubuntu 22.04 LTS
- Windows 11
デモアプリ:
- Hello Worldウィンドウボタン
- Canvas描画図形、テキスト
- イベント処理(クリック、キー入力)
検証方法:
- スクリーンショット取得
- イベントログ記録
- 自動UIテスト
```
### 4. 開発効率性
```yaml
測定項目:
- 新Box追加に必要な行数
- 新バックエンド追加の工数
- ビルド時間
比較対象:
- LLVM数百命令
- JVM200+命令)
- Lua50命令
```
## 🧪 具体的な実験手順
### 実験1: Hello GUI
```nyash
# hello-gui.nyash
box HelloApp from GuiBox {
render() {
return me.window("MIR15 GUI Demo", [
me.label("15命令で動くGUI"),
me.button("Click Me", () => {
print("Button clicked!")
}),
me.canvas(300, 200, (ctx) => {
ctx.fillRect(50, 50, 200, 100, "#FF0000")
ctx.drawText(100, 100, "Nyash", "#FFFFFF")
})
])
}
}
new HelloApp().run()
```
**実行コマンド**:
```bash
# VM実行
./target/release/nyash apps/gui/hello-gui.nyash
# JIT実行
./target/release/nyash --backend vm --jit apps/gui/hello-gui.nyash
# AOT実行
./target/release/nyash --aot apps/gui/hello-gui.nyash -o hello-gui
./hello-gui
# WASM実行
./target/release/nyash --compile-wasm apps/gui/hello-gui.nyash
```
### 実験2: 命令使用分析
```bash
# 命令プロファイリング有効化
NYASH_MIR_PROFILE=1 ./target/release/nyash apps/gui/hello-gui.nyash
# 結果をJSON出力
NYASH_MIR_PROFILE_JSON=1 ./target/release/nyash apps/gui/hello-gui.nyash > profile.json
```
### 実験3: 性能ベンチマーク
```yaml
ベンチマーク項目:
1. 起動時間(ウィンドウ表示まで)
2. イベント応答時間(クリック→処理)
3. 描画性能FPS測定
4. メモリ使用量
```
## 📈 期待される結果
### 定量的結果
1. **命令数**: 15命令で全機能実現
2. **実装規模**: ~4,000行他言語の1/10以下
3. **開発期間**: 30日通常の1/12
4. **性能**: 実用レベルVM比でJIT 2-5倍高速
### 定性的結果
1. **シンプルさ**: 学習曲線が緩やか
2. **保守性**: 変更の影響範囲が明確
3. **移植性**: 新環境への適応が容易
4. **拡張性**: Box追加で機能拡張
## 🔍 脅威の妥当性Threats to Validity
### 内的妥当性
- 最適化の配置がBox側に偏る可能性
- ベンチマークが単純すぎる可能性
### 外的妥当性
- より複雑なアプリでの検証が必要
- 他のドメインWeb、ML等での検証
### 構成妥当性
- 「実用的」の定義の明確化が必要
- 性能測定の公平性確保
## 🚀 実験実施計画
1. **Week 1**: 基本GUI Box実装
2. **Week 2**: デモアプリ作成・動作確認
3. **Week 3**: 性能測定・最適化
4. **Week 4**: データ分析・図表作成
## 📊 成果物
- 命令使用分布グラフ
- バックエンド比較表
- GUIスクリーンショット
- 性能ベンチマーク結果
- 実験再現用スクリプト一式