- PyRuntimeBox.eval() で完全AOT対応(FloatBox返却) - NYASH_PY_AUTODECODE=1 によるプリミティブ型自動変換 - ConsoleBox経由の出力もAOT対応 - 多数のPythonテストサンプル追加 - 論文「1ヶ月でインタープリターからネイティブまで」執筆開始 課題: - import/getattr/callはプラグイン側の実装待ち - importとevalの文脈共有は未対応 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
128 lines
4.1 KiB
Markdown
128 lines
4.1 KiB
Markdown
# 📊 Nyash初期性能データ(2025年8月29日)
|
||
|
||
## ⚠️ 重要:最適化前の貴重なベースラインデータ
|
||
|
||
これは20日間の開発完了直後、**最適化を一切行っていない**状態での性能データです。
|
||
今後の最適化により大幅な改善が見込まれるため、歴史的価値のある記録として保存します。
|
||
|
||
## 🚀 実行環境
|
||
|
||
- **日時**: 2025年8月29日
|
||
- **マシン**: WSL2 (Windows Subsystem for Linux)
|
||
- **ビルド**: `cargo build --release -j32 --features cranelift-jit`
|
||
- **Nyashバージョン**: Phase 10.10完了直後(コミット: b767251)
|
||
|
||
## 📈 性能測定結果
|
||
|
||
### 1. シンプルベンチマーク(benchmark_simple.nyash)
|
||
|
||
プログラム内容:
|
||
- フィボナッチ数列計算(20項)
|
||
- 配列操作(1000要素の追加)
|
||
- 文字列連結(100回)
|
||
|
||
#### 実行時間比較
|
||
|
||
| 実行形態 | 実行時間 | 相対速度 |
|
||
|---------|---------|---------|
|
||
| Interpreter | 0.788秒 | 1.0x(基準) |
|
||
| VM | 0.305秒 | **2.6倍高速** |
|
||
| JIT | (部分動作) | - |
|
||
| AOT | (未測定) | - |
|
||
|
||
### 2. ビルトインベンチマーク(simple_add)
|
||
|
||
`--benchmark`オプションによる自動測定:
|
||
|
||
| 実行形態 | ops/sec | 相対速度 | レイテンシ |
|
||
|---------|---------|---------|-----------|
|
||
| Interpreter | 1,734.91 | 1.0x | 576.72μs/op |
|
||
| VM | 14,673.87 | **8.46倍** | 68.15μs/op |
|
||
| JIT | 14,875.64 | **8.58倍**(VM比1.01倍) | 67.22μs/op |
|
||
|
||
注:JIT速度にはコンパイル時間が含まれているため、実際の実行速度はより高速
|
||
|
||
### 3. 実行形態の動作状況
|
||
|
||
| 実行形態 | 状態 | 備考 |
|
||
|---------|-----|------|
|
||
| Interpreter | ✅ 完全動作 | 全機能実装済み |
|
||
| VM | ✅ 完全動作 | MIRベース高速実行 |
|
||
| JIT | 🔧 部分動作 | Cranelift統合、基本演算のみ |
|
||
| AOT | 📦 .o生成確認 | libnyrt.a経由でEXE化可能 |
|
||
| WASM | 🌐 コンパイル可能 | WAT形式出力確認 |
|
||
|
||
## 🔬 詳細データ
|
||
|
||
### VM実行ログ(抜粋)
|
||
```
|
||
Computing Fibonacci...
|
||
Fib(20) = 6765
|
||
|
||
Array operations...
|
||
Array size: 1000
|
||
|
||
String concatenation...
|
||
String length: 100
|
||
|
||
Benchmark complete!
|
||
✅ VM execution completed successfully!
|
||
```
|
||
|
||
### メモリ使用状況
|
||
- 起動時オーバーヘッド:プラグイン8個ロード
|
||
- 実行中:Arc<Mutex>による安全な参照カウント
|
||
|
||
### プラグインロード時間
|
||
```
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_filebox_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_counter_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_net_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_python_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_string_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_integer_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_map_plugin.so
|
||
[PluginLoaderV2] nyash_plugin_init rc=0 for libnyash_array_plugin.so
|
||
```
|
||
|
||
## 📊 Python統合性能(Phase 10.5)
|
||
|
||
ChatGPT5による実装:
|
||
```nyash
|
||
py.import("math").getattr("sqrt").call(9).str()
|
||
```
|
||
|
||
- プラグイン経由でPython実行環境に接続
|
||
- Handle型による効率的なオブジェクト管理
|
||
- VM経路で完全動作確認
|
||
|
||
## 🎯 今後の最適化ポイント
|
||
|
||
1. **JIT最適化**
|
||
- 型特殊化によるボクシング削減
|
||
- インライン展開
|
||
- ループ最適化
|
||
|
||
2. **VM最適化**
|
||
- FastPath拡張
|
||
- 命令フュージョン
|
||
- キャッシュ効率化
|
||
|
||
3. **メモリ最適化**
|
||
- Arc<Mutex>の選択的使用
|
||
- 小整数の即値化
|
||
- 文字列インターン
|
||
|
||
4. **起動時間最適化**
|
||
- プラグイン遅延ロード
|
||
- 事前コンパイル済みMIR
|
||
|
||
## 💡 考察
|
||
|
||
最適化を一切行っていない状態で**2.6〜8.5倍**の速度向上を達成したことは、アーキテクチャの健全性を示している。今後の最適化により、さらに10倍以上の性能向上が期待できる。
|
||
|
||
---
|
||
|
||
**記録者**: Claude Code(にゃー!)
|
||
**協力**: ChatGPT5(Python統合実装中)
|
||
**日付**: 2025年8月29日 - 20日間の偉業達成直後 🎉 |