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