- Keep essential information within 500 lines (now 395 lines) - Maintain important syntax examples and development principles - Move detailed information to appropriate docs files: - Development practices → docs/guides/development-practices.md - Testing guide → docs/guides/testing-guide.md - Claude issues → docs/tools/claude-issues.md - Add proper links to all referenced documentation - Balance between minimal entry point and practical usability
125 lines
3.7 KiB
Markdown
125 lines
3.7 KiB
Markdown
# ベンチマークアプリ推奨案(AI会議結果)
|
||
|
||
Date: 2025-08-31
|
||
相談先: Gemini + Codex
|
||
|
||
## 🎯 AI先生たちの推奨ベンチマーク
|
||
|
||
### 📊 Gemini先生の推奨(論文・実用重視)
|
||
|
||
#### Tier 1: 論文の主役候補
|
||
1. **レイトレーサー (Ray Tracer)**
|
||
- **理由**: CPU負荷高、JIT/AOT効果が劇的
|
||
- **効果**: Interpreter vs VM vs LLVM の性能差を視覚的に証明
|
||
- **規模**: 200-300行
|
||
|
||
2. **Lispインタープリター**
|
||
- **理由**: 「Everything is Box」の優位性を完璧に証明
|
||
- **効果**: 動的型付け言語での統一モデルの威力
|
||
- **規模**: 300-400行
|
||
|
||
#### Tier 2: 実用性アピール
|
||
3. **静的サイトジェネレータ**
|
||
- **理由**: Markdownパーサー + HTMLコンパイラ
|
||
- **効果**: Fileプラグイン、文字列処理、実用性
|
||
- **規模**: 400-500行
|
||
|
||
4. **REST APIサーバー**
|
||
- **理由**: 現代的アプリ開発での適性証明
|
||
- **効果**: Netプラグイン、JSON操作、並行性
|
||
- **規模**: 300-400行
|
||
|
||
### 📈 Codex先生の推奨(ベンチマーク標準重視)
|
||
|
||
#### CLBG(Computer Language Benchmarks Game)定番
|
||
1. **n-body** - 数値計算の定番
|
||
2. **spectral-norm** - 行列・ベクトル演算
|
||
3. **mandelbrot** - 純粋計算 + 画像出力
|
||
4. **fannkuch-redux** - 組み合わせ計算
|
||
5. **k-nucleotide** - 文字列・ハッシュ処理
|
||
6. **binary-trees** - メモリ割り当て・GC性能
|
||
|
||
#### 現実的なアプリ(Nyash特化)
|
||
7. **JSON/CSV Stream Aggregator**
|
||
- File/Netプラグインから同じコードで処理
|
||
- 「Everything is Box」の威力を実証
|
||
|
||
## 🚀 推奨実装順序(論文説得力重視)
|
||
|
||
### Phase 1: CLBG標準ベンチマーク(信頼性)
|
||
```bash
|
||
# 1. binary-trees(メモリ・GC基準)
|
||
# 2. n-body(数値計算)
|
||
# 3. mandelbrot(計算 + I/O)
|
||
```
|
||
|
||
### Phase 2: Nyash特色ベンチマーク(独自性)
|
||
```bash
|
||
# 4. JSON Stream Aggregator(プラグイン統一)
|
||
# 5. レイトレーサー(視覚的インパクト)
|
||
```
|
||
|
||
### Phase 3: 実用アプリ(実践性)
|
||
```bash
|
||
# 6. Lispインタープリター(言語能力)
|
||
# 7. 静的サイトジェネレータ(実用性)
|
||
```
|
||
|
||
## 📊 期待される性能差
|
||
|
||
### Interpreter → VM → LLVM
|
||
- **n-body**: 1x → 10x → 50x(数値計算)
|
||
- **mandelbrot**: 1x → 15x → 80x(ループ最適化)
|
||
- **binary-trees**: 1x → 8x → 20x(GC最適化)
|
||
- **JSON Stream**: 1x → 12x → 30x(プラグイン + ループ)
|
||
|
||
## 🎯 AOTスモークテストの具体例
|
||
|
||
ChatGPT5さんが言う「代表サンプルのAOTスモーク」:
|
||
|
||
### Array get/set スモーク
|
||
```nyash
|
||
// smoke_array_getset.nyash
|
||
local arr = new ArrayBox()
|
||
arr.set(0, 42)
|
||
arr.set(1, 100)
|
||
local result = arr.get(0) + arr.get(1)
|
||
print("Result: " + result) // Expected: Result: 142
|
||
```
|
||
|
||
### Console.log スモーク
|
||
```nyash
|
||
// smoke_console_log.nyash
|
||
local console = new ConsoleBox()
|
||
console.log("Hello from LLVM!")
|
||
print("Result: success")
|
||
```
|
||
|
||
### 実行・比較
|
||
```bash
|
||
# VM実行
|
||
./nyash --backend vm smoke_array_getset.nyash > vm_out.txt
|
||
|
||
# LLVM AOT実行
|
||
./nyash --compile-native smoke_array_getset.nyash -o test_app
|
||
./test_app > aot_out.txt
|
||
|
||
# 結果比較(一致すればOK)
|
||
diff vm_out.txt aot_out.txt
|
||
```
|
||
|
||
## 💡 論文での活用方法
|
||
|
||
1. **Section 5: Evaluation**
|
||
- CLBGベンチマークで他言語と性能比較
|
||
- Nyash特色ベンチマークで独自性証明
|
||
|
||
2. **Section 6: Case Studies**
|
||
- レイトレーサーでJIT/LLVM効果の視覚化
|
||
- Stream Aggregatorで「Everything is Box」実証
|
||
|
||
3. **Appendix: Reproducibility**
|
||
- 全ベンチマークコードを掲載
|
||
- 実行手順を詳細に記載
|
||
|
||
これで論文の説得力とインパクトが大幅に向上しますね! |