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日間の偉業達成直後 🎉
|