# サンプル一覧
このディレクトリには、Python の元サンプルと各ターゲット言語への変換結果を配置しています。
- ゴールデンマニフェスト: [`golden/manifest.json`](golden/manifest.json)
| No | サンプル | 実行結果 | Py | cpp | rs | cs | ps1 | js | ts | dart | go | java | swift | kt | rb | lua | scala | php | nim | jl | zig |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 01 | mandelbrot | [`01_mandelbrot.png`](images/01_mandelbrot.png) | [`py`](py/01_mandelbrot.py) | [`cpp`](cpp/01_mandelbrot.cpp) | [`rs`](rs/01_mandelbrot.rs) | [`cs`](cs/01_mandelbrot.cs) | [`ps1`](powershell/01_mandelbrot.ps1) | [`js`](js/01_mandelbrot.js) | [`ts`](ts/01_mandelbrot.ts) | [`dart`](dart/01_mandelbrot.dart) | [`go`](go/01_mandelbrot.go) | [`java`](java/01_mandelbrot.java) | [`swift`](swift/01_mandelbrot.swift) | [`kt`](kotlin/01_mandelbrot.kt) | [`rb`](ruby/01_mandelbrot.rb) | [`lua`](lua/01_mandelbrot.lua) | [`scala`](scala/01_mandelbrot.scala) | [`php`](php/01_mandelbrot.php) | [`nim`](nim/01_mandelbrot.nim) | [`jl`](julia/01_mandelbrot.jl) | [`zig`](zig/01_mandelbrot.zig) |
| 02 | raytrace_spheres | [`02_raytrace_spheres.png`](images/02_raytrace_spheres.png) | [`py`](py/02_raytrace_spheres.py) | [`cpp`](cpp/02_raytrace_spheres.cpp) | [`rs`](rs/02_raytrace_spheres.rs) | [`cs`](cs/02_raytrace_spheres.cs) | [`ps1`](powershell/02_raytrace_spheres.ps1) | [`js`](js/02_raytrace_spheres.js) | [`ts`](ts/02_raytrace_spheres.ts) | [`dart`](dart/02_raytrace_spheres.dart) | [`go`](go/02_raytrace_spheres.go) | [`java`](java/02_raytrace_spheres.java) | [`swift`](swift/02_raytrace_spheres.swift) | [`kt`](kotlin/02_raytrace_spheres.kt) | [`rb`](ruby/02_raytrace_spheres.rb) | [`lua`](lua/02_raytrace_spheres.lua) | [`scala`](scala/02_raytrace_spheres.scala) | [`php`](php/02_raytrace_spheres.php) | [`nim`](nim/02_raytrace_spheres.nim) | [`jl`](julia/02_raytrace_spheres.jl) | [`zig`](zig/02_raytrace_spheres.zig) |
| 03 | julia_set | [`03_julia_set.png`](images/03_julia_set.png) | [`py`](py/03_julia_set.py) | [`cpp`](cpp/03_julia_set.cpp) | [`rs`](rs/03_julia_set.rs) | [`cs`](cs/03_julia_set.cs) | [`ps1`](powershell/03_julia_set.ps1) | [`js`](js/03_julia_set.js) | [`ts`](ts/03_julia_set.ts) | [`dart`](dart/03_julia_set.dart) | [`go`](go/03_julia_set.go) | [`java`](java/03_julia_set.java) | [`swift`](swift/03_julia_set.swift) | [`kt`](kotlin/03_julia_set.kt) | [`rb`](ruby/03_julia_set.rb) | [`lua`](lua/03_julia_set.lua) | [`scala`](scala/03_julia_set.scala) | [`php`](php/03_julia_set.php) | [`nim`](nim/03_julia_set.nim) | [`jl`](julia/03_julia_set.jl) | [`zig`](zig/03_julia_set.zig) |
| 04 | orbit_trap_julia | [`04_orbit_trap_julia.png`](images/04_orbit_trap_julia.png) | [`py`](py/04_orbit_trap_julia.py) | [`cpp`](cpp/04_orbit_trap_julia.cpp) | [`rs`](rs/04_orbit_trap_julia.rs) | [`cs`](cs/04_orbit_trap_julia.cs) | [`ps1`](powershell/04_orbit_trap_julia.ps1) | [`js`](js/04_orbit_trap_julia.js) | [`ts`](ts/04_orbit_trap_julia.ts) | [`dart`](dart/04_orbit_trap_julia.dart) | [`go`](go/04_orbit_trap_julia.go) | [`java`](java/04_orbit_trap_julia.java) | [`swift`](swift/04_orbit_trap_julia.swift) | [`kt`](kotlin/04_orbit_trap_julia.kt) | [`rb`](ruby/04_orbit_trap_julia.rb) | [`lua`](lua/04_orbit_trap_julia.lua) | [`scala`](scala/04_orbit_trap_julia.scala) | [`php`](php/04_orbit_trap_julia.php) | [`nim`](nim/04_orbit_trap_julia.nim) | [`jl`](julia/04_orbit_trap_julia.jl) | [`zig`](zig/04_orbit_trap_julia.zig) |
| 05 | mandelbrot_zoom | [`05_mandelbrot_zoom.gif`](images/05_mandelbrot_zoom.gif) | [`py`](py/05_mandelbrot_zoom.py) | [`cpp`](cpp/05_mandelbrot_zoom.cpp) | [`rs`](rs/05_mandelbrot_zoom.rs) | [`cs`](cs/05_mandelbrot_zoom.cs) | [`ps1`](powershell/05_mandelbrot_zoom.ps1) | [`js`](js/05_mandelbrot_zoom.js) | [`ts`](ts/05_mandelbrot_zoom.ts) | [`dart`](dart/05_mandelbrot_zoom.dart) | [`go`](go/05_mandelbrot_zoom.go) | [`java`](java/05_mandelbrot_zoom.java) | [`swift`](swift/05_mandelbrot_zoom.swift) | [`kt`](kotlin/05_mandelbrot_zoom.kt) | [`rb`](ruby/05_mandelbrot_zoom.rb) | [`lua`](lua/05_mandelbrot_zoom.lua) | [`scala`](scala/05_mandelbrot_zoom.scala) | [`php`](php/05_mandelbrot_zoom.php) | [`nim`](nim/05_mandelbrot_zoom.nim) | [`jl`](julia/05_mandelbrot_zoom.jl) | [`zig`](zig/05_mandelbrot_zoom.zig) |
| 06 | julia_parameter_sweep | [`06_julia_parameter_sweep.gif`](images/06_julia_parameter_sweep.gif) | [`py`](py/06_julia_parameter_sweep.py) | [`cpp`](cpp/06_julia_parameter_sweep.cpp) | [`rs`](rs/06_julia_parameter_sweep.rs) | [`cs`](cs/06_julia_parameter_sweep.cs) | [`ps1`](powershell/06_julia_parameter_sweep.ps1) | [`js`](js/06_julia_parameter_sweep.js) | [`ts`](ts/06_julia_parameter_sweep.ts) | [`dart`](dart/06_julia_parameter_sweep.dart) | [`go`](go/06_julia_parameter_sweep.go) | [`java`](java/06_julia_parameter_sweep.java) | [`swift`](swift/06_julia_parameter_sweep.swift) | [`kt`](kotlin/06_julia_parameter_sweep.kt) | [`rb`](ruby/06_julia_parameter_sweep.rb) | [`lua`](lua/06_julia_parameter_sweep.lua) | [`scala`](scala/06_julia_parameter_sweep.scala) | [`php`](php/06_julia_parameter_sweep.php) | [`nim`](nim/06_julia_parameter_sweep.nim) | [`jl`](julia/06_julia_parameter_sweep.jl) | [`zig`](zig/06_julia_parameter_sweep.zig) |
| 07 | game_of_life_loop | [`07_game_of_life_loop.gif`](images/07_game_of_life_loop.gif) | [`py`](py/07_game_of_life_loop.py) | [`cpp`](cpp/07_game_of_life_loop.cpp) | [`rs`](rs/07_game_of_life_loop.rs) | [`cs`](cs/07_game_of_life_loop.cs) | [`ps1`](powershell/07_game_of_life_loop.ps1) | [`js`](js/07_game_of_life_loop.js) | [`ts`](ts/07_game_of_life_loop.ts) | [`dart`](dart/07_game_of_life_loop.dart) | [`go`](go/07_game_of_life_loop.go) | [`java`](java/07_game_of_life_loop.java) | [`swift`](swift/07_game_of_life_loop.swift) | [`kt`](kotlin/07_game_of_life_loop.kt) | [`rb`](ruby/07_game_of_life_loop.rb) | [`lua`](lua/07_game_of_life_loop.lua) | [`scala`](scala/07_game_of_life_loop.scala) | [`php`](php/07_game_of_life_loop.php) | [`nim`](nim/07_game_of_life_loop.nim) | [`jl`](julia/07_game_of_life_loop.jl) | [`zig`](zig/07_game_of_life_loop.zig) |
| 08 | langtons_ant | [`08_langtons_ant.gif`](images/08_langtons_ant.gif) | [`py`](py/08_langtons_ant.py) | [`cpp`](cpp/08_langtons_ant.cpp) | [`rs`](rs/08_langtons_ant.rs) | [`cs`](cs/08_langtons_ant.cs) | [`ps1`](powershell/08_langtons_ant.ps1) | [`js`](js/08_langtons_ant.js) | [`ts`](ts/08_langtons_ant.ts) | [`dart`](dart/08_langtons_ant.dart) | [`go`](go/08_langtons_ant.go) | [`java`](java/08_langtons_ant.java) | [`swift`](swift/08_langtons_ant.swift) | [`kt`](kotlin/08_langtons_ant.kt) | [`rb`](ruby/08_langtons_ant.rb) | [`lua`](lua/08_langtons_ant.lua) | [`scala`](scala/08_langtons_ant.scala) | [`php`](php/08_langtons_ant.php) | [`nim`](nim/08_langtons_ant.nim) | [`jl`](julia/08_langtons_ant.jl) | [`zig`](zig/08_langtons_ant.zig) |
| 09 | fire_simulation | [`09_fire_simulation.gif`](images/09_fire_simulation.gif) | [`py`](py/09_fire_simulation.py) | [`cpp`](cpp/09_fire_simulation.cpp) | [`rs`](rs/09_fire_simulation.rs) | [`cs`](cs/09_fire_simulation.cs) | [`ps1`](powershell/09_fire_simulation.ps1) | [`js`](js/09_fire_simulation.js) | [`ts`](ts/09_fire_simulation.ts) | [`dart`](dart/09_fire_simulation.dart) | [`go`](go/09_fire_simulation.go) | [`java`](java/09_fire_simulation.java) | [`swift`](swift/09_fire_simulation.swift) | [`kt`](kotlin/09_fire_simulation.kt) | [`rb`](ruby/09_fire_simulation.rb) | [`lua`](lua/09_fire_simulation.lua) | [`scala`](scala/09_fire_simulation.scala) | [`php`](php/09_fire_simulation.php) | [`nim`](nim/09_fire_simulation.nim) | [`jl`](julia/09_fire_simulation.jl) | [`zig`](zig/09_fire_simulation.zig) |
| 10 | plasma_effect | [`10_plasma_effect.gif`](images/10_plasma_effect.gif) | [`py`](py/10_plasma_effect.py) | [`cpp`](cpp/10_plasma_effect.cpp) | [`rs`](rs/10_plasma_effect.rs) | [`cs`](cs/10_plasma_effect.cs) | [`ps1`](powershell/10_plasma_effect.ps1) | [`js`](js/10_plasma_effect.js) | [`ts`](ts/10_plasma_effect.ts) | [`dart`](dart/10_plasma_effect.dart) | [`go`](go/10_plasma_effect.go) | [`java`](java/10_plasma_effect.java) | [`swift`](swift/10_plasma_effect.swift) | [`kt`](kotlin/10_plasma_effect.kt) | [`rb`](ruby/10_plasma_effect.rb) | [`lua`](lua/10_plasma_effect.lua) | [`scala`](scala/10_plasma_effect.scala) | [`php`](php/10_plasma_effect.php) | [`nim`](nim/10_plasma_effect.nim) | [`jl`](julia/10_plasma_effect.jl) | [`zig`](zig/10_plasma_effect.zig) |
| 11 | lissajous_particles | [`11_lissajous_particles.gif`](images/11_lissajous_particles.gif) | [`py`](py/11_lissajous_particles.py) | [`cpp`](cpp/11_lissajous_particles.cpp) | [`rs`](rs/11_lissajous_particles.rs) | [`cs`](cs/11_lissajous_particles.cs) | [`ps1`](powershell/11_lissajous_particles.ps1) | [`js`](js/11_lissajous_particles.js) | [`ts`](ts/11_lissajous_particles.ts) | [`dart`](dart/11_lissajous_particles.dart) | [`go`](go/11_lissajous_particles.go) | [`java`](java/11_lissajous_particles.java) | [`swift`](swift/11_lissajous_particles.swift) | [`kt`](kotlin/11_lissajous_particles.kt) | [`rb`](ruby/11_lissajous_particles.rb) | [`lua`](lua/11_lissajous_particles.lua) | [`scala`](scala/11_lissajous_particles.scala) | [`php`](php/11_lissajous_particles.php) | [`nim`](nim/11_lissajous_particles.nim) | [`jl`](julia/11_lissajous_particles.jl) | [`zig`](zig/11_lissajous_particles.zig) |
| 12 | sort_visualizer | [`12_sort_visualizer.gif`](images/12_sort_visualizer.gif) | [`py`](py/12_sort_visualizer.py) | [`cpp`](cpp/12_sort_visualizer.cpp) | [`rs`](rs/12_sort_visualizer.rs) | [`cs`](cs/12_sort_visualizer.cs) | [`ps1`](powershell/12_sort_visualizer.ps1) | [`js`](js/12_sort_visualizer.js) | [`ts`](ts/12_sort_visualizer.ts) | [`dart`](dart/12_sort_visualizer.dart) | [`go`](go/12_sort_visualizer.go) | [`java`](java/12_sort_visualizer.java) | [`swift`](swift/12_sort_visualizer.swift) | [`kt`](kotlin/12_sort_visualizer.kt) | [`rb`](ruby/12_sort_visualizer.rb) | [`lua`](lua/12_sort_visualizer.lua) | [`scala`](scala/12_sort_visualizer.scala) | [`php`](php/12_sort_visualizer.php) | [`nim`](nim/12_sort_visualizer.nim) | [`jl`](julia/12_sort_visualizer.jl) | [`zig`](zig/12_sort_visualizer.zig) |
| 13 | maze_generation_steps | [`13_maze_generation_steps.gif`](images/13_maze_generation_steps.gif) | [`py`](py/13_maze_generation_steps.py) | [`cpp`](cpp/13_maze_generation_steps.cpp) | [`rs`](rs/13_maze_generation_steps.rs) | [`cs`](cs/13_maze_generation_steps.cs) | [`ps1`](powershell/13_maze_generation_steps.ps1) | [`js`](js/13_maze_generation_steps.js) | [`ts`](ts/13_maze_generation_steps.ts) | [`dart`](dart/13_maze_generation_steps.dart) | [`go`](go/13_maze_generation_steps.go) | [`java`](java/13_maze_generation_steps.java) | [`swift`](swift/13_maze_generation_steps.swift) | [`kt`](kotlin/13_maze_generation_steps.kt) | [`rb`](ruby/13_maze_generation_steps.rb) | [`lua`](lua/13_maze_generation_steps.lua) | [`scala`](scala/13_maze_generation_steps.scala) | [`php`](php/13_maze_generation_steps.php) | [`nim`](nim/13_maze_generation_steps.nim) | [`jl`](julia/13_maze_generation_steps.jl) | [`zig`](zig/13_maze_generation_steps.zig) |
| 14 | raymarching_light_cycle | [`14_raymarching_light_cycle.gif`](images/14_raymarching_light_cycle.gif) | [`py`](py/14_raymarching_light_cycle.py) | [`cpp`](cpp/14_raymarching_light_cycle.cpp) | [`rs`](rs/14_raymarching_light_cycle.rs) | [`cs`](cs/14_raymarching_light_cycle.cs) | [`ps1`](powershell/14_raymarching_light_cycle.ps1) | [`js`](js/14_raymarching_light_cycle.js) | [`ts`](ts/14_raymarching_light_cycle.ts) | [`dart`](dart/14_raymarching_light_cycle.dart) | [`go`](go/14_raymarching_light_cycle.go) | [`java`](java/14_raymarching_light_cycle.java) | [`swift`](swift/14_raymarching_light_cycle.swift) | [`kt`](kotlin/14_raymarching_light_cycle.kt) | [`rb`](ruby/14_raymarching_light_cycle.rb) | [`lua`](lua/14_raymarching_light_cycle.lua) | [`scala`](scala/14_raymarching_light_cycle.scala) | [`php`](php/14_raymarching_light_cycle.php) | [`nim`](nim/14_raymarching_light_cycle.nim) | [`jl`](julia/14_raymarching_light_cycle.jl) | [`zig`](zig/14_raymarching_light_cycle.zig) |
| 15 | wave_interference_loop | [`15_wave_interference_loop.gif`](images/15_wave_interference_loop.gif) | [`py`](py/15_wave_interference_loop.py) | [`cpp`](cpp/15_wave_interference_loop.cpp) | [`rs`](rs/15_wave_interference_loop.rs) | [`cs`](cs/15_wave_interference_loop.cs) | [`ps1`](powershell/15_wave_interference_loop.ps1) | [`js`](js/15_wave_interference_loop.js) | [`ts`](ts/15_wave_interference_loop.ts) | [`dart`](dart/15_wave_interference_loop.dart) | [`go`](go/15_wave_interference_loop.go) | [`java`](java/15_wave_interference_loop.java) | [`swift`](swift/15_wave_interference_loop.swift) | [`kt`](kotlin/15_wave_interference_loop.kt) | [`rb`](ruby/15_wave_interference_loop.rb) | [`lua`](lua/15_wave_interference_loop.lua) | [`scala`](scala/15_wave_interference_loop.scala) | [`php`](php/15_wave_interference_loop.php) | [`nim`](nim/15_wave_interference_loop.nim) | [`jl`](julia/15_wave_interference_loop.jl) | [`zig`](zig/15_wave_interference_loop.zig) |
| 16 | glass_sculpture_chaos | [`16_glass_sculpture_chaos.gif`](images/16_glass_sculpture_chaos.gif) | [`py`](py/16_glass_sculpture_chaos.py) | [`cpp`](cpp/16_glass_sculpture_chaos.cpp) | [`rs`](rs/16_glass_sculpture_chaos.rs) | [`cs`](cs/16_glass_sculpture_chaos.cs) | [`ps1`](powershell/16_glass_sculpture_chaos.ps1) | [`js`](js/16_glass_sculpture_chaos.js) | [`ts`](ts/16_glass_sculpture_chaos.ts) | [`dart`](dart/16_glass_sculpture_chaos.dart) | [`go`](go/16_glass_sculpture_chaos.go) | [`java`](java/16_glass_sculpture_chaos.java) | [`swift`](swift/16_glass_sculpture_chaos.swift) | [`kt`](kotlin/16_glass_sculpture_chaos.kt) | [`rb`](ruby/16_glass_sculpture_chaos.rb) | [`lua`](lua/16_glass_sculpture_chaos.lua) | [`scala`](scala/16_glass_sculpture_chaos.scala) | [`php`](php/16_glass_sculpture_chaos.php) | [`nim`](nim/16_glass_sculpture_chaos.nim) | [`jl`](julia/16_glass_sculpture_chaos.jl) | [`zig`](zig/16_glass_sculpture_chaos.zig) |
| 17 | monte_carlo_pi | - | [`py`](py/17_monte_carlo_pi.py) | [`cpp`](cpp/17_monte_carlo_pi.cpp) | [`rs`](rs/17_monte_carlo_pi.rs) | [`cs`](cs/17_monte_carlo_pi.cs) | [`ps1`](powershell/17_monte_carlo_pi.ps1) | [`js`](js/17_monte_carlo_pi.js) | [`ts`](ts/17_monte_carlo_pi.ts) | [`dart`](dart/17_monte_carlo_pi.dart) | [`go`](go/17_monte_carlo_pi.go) | [`java`](java/17_monte_carlo_pi.java) | [`swift`](swift/17_monte_carlo_pi.swift) | [`kt`](kotlin/17_monte_carlo_pi.kt) | [`rb`](ruby/17_monte_carlo_pi.rb) | [`lua`](lua/17_monte_carlo_pi.lua) | [`scala`](scala/17_monte_carlo_pi.scala) | [`php`](php/17_monte_carlo_pi.php) | [`nim`](nim/17_monte_carlo_pi.nim) | [`jl`](julia/17_monte_carlo_pi.jl) | [`zig`](zig/17_monte_carlo_pi.zig) |
| 18 | mini_language_interpreter | - | [`py`](py/18_mini_language_interpreter.py) | [`cpp`](cpp/18_mini_language_interpreter.cpp) | [`rs`](rs/18_mini_language_interpreter.rs) | [`cs`](cs/18_mini_language_interpreter.cs) | [`ps1`](powershell/18_mini_language_interpreter.ps1) | [`js`](js/18_mini_language_interpreter.js) | [`ts`](ts/18_mini_language_interpreter.ts) | [`dart`](dart/18_mini_language_interpreter.dart) | [`go`](go/18_mini_language_interpreter.go) | [`java`](java/18_mini_language_interpreter.java) | [`swift`](swift/18_mini_language_interpreter.swift) | [`kt`](kotlin/18_mini_language_interpreter.kt) | [`rb`](ruby/18_mini_language_interpreter.rb) | [`lua`](lua/18_mini_language_interpreter.lua) | [`scala`](scala/18_mini_language_interpreter.scala) | [`php`](php/18_mini_language_interpreter.php) | [`nim`](nim/18_mini_language_interpreter.nim) | [`jl`](julia/18_mini_language_interpreter.jl) | [`zig`](zig/18_mini_language_interpreter.zig) |
注記:
- `実行結果` が `-` の項目は、現時点で `sample/images/` に公開画像/GIF成果物を置いていないサンプルです。
- GitHub 上で `sample/` を開いたときに辿りやすいよう、パスベースで整理しています。
- Lua 出力は fail-closed 運用です。現時点で `sample/lua` へ再生成済みなのは `02/03/04/17` の4件です。
## サンプル運用ガイド
### 目的
`sample/` は、実用寄りの Python サンプルを各言語へトランスパイルし、実行結果と実行時間を比較するためのディレクトリです。
### ディレクトリ構成
- [`py/`](py): 変換元 Python サンプル(現在 `01`〜`18`)
- [`cpp/`](cpp): C++ 変換結果
- [`rs/`](rs): Rust 変換結果
- [`cs/`](cs): C# 変換結果
- [`powershell/`](powershell): PowerShell 変換結果
- [`js/`](js): JavaScript 変換結果
- [`ts/`](ts): TypeScript 変換結果
- [`dart/`](dart): Dart 変換結果
- [`go/`](go): Go 変換結果
- [`java/`](java): Java 変換結果
- [`swift/`](swift): Swift 変換結果
- [`kotlin/`](kotlin): Kotlin 変換結果
- [`ruby/`](ruby): Ruby 変換結果
- [`lua/`](lua): Lua 変換結果(段階対応)
- [`scala/`](scala): Scala 変換結果
- [`php/`](php): PHP 変換結果
- [`nim/`](nim): Nim 変換結果
- [`julia/`](julia): Julia 変換結果
- [`zig/`](zig): Zig 変換結果
- [`images/`](images): README 表示用の静的画像(Git 管理)
- `obj/`: 各言語のビルド生成物(Git 管理外)
- `out/`: 実行時の出力画像(PNG/GIF、Git 管理外)
## 実行速度の比較
Pythonで書かれたサンプルコードの実行時間と、そのトランスパイルしたソースコードでの実行時間。(単位: 秒) 表中のPythonは元のコード、PyPyは参考用です。
|No.|内容|Python|PyPy|C++|Rust|C#|PS|JS|TS|Dart|Go|Java|Swift|Kotlin|Ruby|Lua|Scala3|PHP|Nim|Julia|Zig|
|-|-|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|-:|
|01 |マンデルブロ集合(PNG)|39.303|1.091|18.214|0.781|6.092|232|0.768|7.936|1.742|1.615|2.987|0.760|0.756|32.336|17.806|1.994|10.73|2.63|4.964|1.39|
|02 |球の簡易レイトレーサ(PNG)|13.823|0.529|19.953|0.165|4.357|>600|0.277|5.526|1.232|0.868|3.422|0.289|0.258|19.539|11.931|1.449|4.52|1.12|5.122|0.45|
|03 |ジュリア集合(PNG)|48.285|1.959|18.404|0.823|14.972|>600|1.210|30.285|3.335|2.141|5.272|1.125|1.151|51.769|50.319|4.812|15.84|4.30|17.446|1.44|
|04 |オービットトラップ Julia(PNG)|26.903|1.081|19.529|0.358|5.013|240|0.473|23.409|2.136|1.204|3.013|0.482|0.469|26.123|16.134|1.936|7.54|1.53|2.657|0.85|
|05 |マンデルブロズーム(GIF)|28.506|1.262|17.797|0.569|3.932|>600|1.144|4.268|1.440|1.203|2.598|0.695|0.687|24.371|13.580|2.041|7.27|1.93|2.987|0.92|
|06 |ジュリア集合パラメータ掃引(GIF)|19.846|0.507|20.272|0.407|3.487|>600|1.192|4.373|1.597|1.008|2.925|0.624|0.629|18.446|13.043|2.188|5.51|1.54|4.455|0.87|
|07 |ライフゲーム(GIF)|12.917|0.685|19.345|0.369|7.773|>600|1.364|11.787|5.237|1.278|6.771|1.290|1.267|26.929|41.675|5.803|9.09|2.42|15.551|2.18|
|08 |ラングトンのアリ(GIF)|15.253|0.767|19.218|0.483|9.833|>600|4.383|14.494|8.223|1.364|6.570|1.886|2.019|42.460|60.127|8.613|12.56|2.90|21.323|2.77|
|09 |炎シミュレーション(GIF)|54.585|1.167|19.281|0.661|17.466|>600|2.374|16.352|9.557|1.682|35.798|2.306|2.358|72.303|71.225|20.475|32.64|5.19|28.351|1.80|
|10 |プラズマエフェクト(GIF)|15.664|0.876|21.471|0.554|9.037|>600|1.444|7.862|2.711|1.627|4.526|1.444|1.319|25.959|30.532|5.071|6.66|2.00|15.702|1.79|
|11 |リサージュ粒子(GIF)|10.077|0.532|20.776|0.359|6.069|>600|1.425|7.189|5.478|1.085|4.795|1.371|1.413|20.942|37.382|4.766|6.48|2.23|16.981|2.29|
|12 |ソート可視化(GIF)|10.779|0.552|17.563|0.362|6.568|>600|1.341|7.800|4.453|1.163|5.007|1.328|1.306|21.586|36.047|5.734|6.74|2.21|13.143|0.60|
|13 |迷路生成ステップ(GIF)|9.145|0.533|19.213|0.298|6.337|>600|1.038|7.965|5.014|1.114|4.507|0.997|0.987|18.561|30.268|5.046|6.85|1.98|11.589|1.75|
|14 |簡易レイマーチング(GIF)|6.012|0.300|20.663|0.159|3.290|>600|0.489|3.527|1.453|0.791|2.517|0.503|0.492|12.022|11.867|2.136|2.82|0.71|8.241|0.66|
|15 |波干渉ループ(GIF)|6.192|0.402|20.289|0.252|3.390|>600|0.616|3.878|1.713|0.918|2.878|0.629|0.612|10.983|12.771|2.371|2.77|0.94|7.849|0.76|
|16 |ガラス彫刻のカオス回転(GIF)|13.057|0.606|20.583|0.246|5.229|>600|0.650|3.795|1.667|0.885|4.116|0.667|0.643|20.929|17.477|18.383|5.26|1.54|11.077|0.68|
|17 |モンテカルロ法で円周率近似|7.055|0.105|27.458|0.018|1.408|8|0.597|1.772|0.133|0.593|2.195|0.436|0.436|1.945|0.691|0.130|0.72|0.80|0.074|0.02|
|18 |ミニ言語インタプリタ|2.793|0.601|28.132|0.427|3.608|>600|0.792|1.596|0.422|0.878|2.977|0.423|0.417|8.714|3.194|1.035|2.92|2.32|2.037|6.38|
> 最終自動更新: 2026-03-31T05:05:44
### 計測条件(README 表の前提)
- Python: `PYTHONPATH=src python3 sample/py/.py`
- PyPy: `PYTHONPATH=src pypy3 sample/py/.py`
- C++: `g++ -std=c++20 -O3 -ffast-math -flto -I src ...`
- C#: `mcs ...` + `mono ...`
- PowerShell: `pwsh -File sample/powershell/.ps1`(PowerShell 7.4.6)
- Rust: `rustc -O ...`
- JavaScript: `node sample/js/.js`
- TypeScript: `tsc ...` でコンパイル後 `node ...`
- Go: `go run` または `go build` 後に実行
- Java: `javac` + `java`
- Swift: `swiftc` でビルドした実行ファイル
- Kotlin: `kotlinc -include-runtime` でビルドした `jar`
- Ruby: `ruby --yjit sample/ruby/.rb`(速度計測時。通常実行は `ruby sample/ruby/.rb`)
- Dart: `dart run sample/dart/.dart`(Dart SDK 3.11.3)
- PHP: `php -d memory_limit=8G sample/php/.php`(PHP 8.3.15 CLI)
- Nim: `nim c --hints:off -o:app.out .nim` でコンパイル後に実行(Nim 2.2.8)
- Zig: `zig build-exe -OReleaseFast .zig` でコンパイル後に実行(Zig 0.13.0)
- Julia: `julia .jl`(Julia 1.11.3)
注:
- `py2go.py` / `py2java.py` / `py2swift.py` / `py2kotlin.py` は現在 preview emitter 段階です。
- これら4言語は最小エントリ + 中間コードコメント形式のため、実行結果比較の対象外です。
### README 実行時間表の詳細
- `docs/ja/README.md` の表の値は 2026-02-26 時点で `sample/py` 18件を現行トランスパイラ出力で再計測した実測値です(小数第3位丸め)。
- 計測プロトコルは fresh transpile・`warmup=1`・`repeat=5`・`elapsed_sec` の中央値採用(コンパイル時間は除外)です。
- C++/Rust 列は 2026-02-27 に `tools/benchmark_sample_cpp_rs.py`(fresh transpile, `warmup=1`, `repeat=5`)で再計測しました(ログ: `work/logs/bench_cpp_rs_after_east3_opt_20260227_cases01_17.json`, `work/logs/bench_cpp_rs_after_east3_opt_20260227_case18.json`)。
- Ruby 列は 2026-02-27 に fresh transpile + `ruby --yjit` + `warmup=1` + `repeat=5` で再計測し、中央値を反映しました(ログ: `work/logs/bench_ruby_yjit_sample_20260227.json`)。
- Ruby の速度計測は `ruby --yjit` を使用します。
- 最新計測では `>1.5x` の乖離はありません(18件すべて `<=1.5x`)。
- Go/Java/Swift/Kotlin は現行実装で JS sidecar bridge 経由で実行されるため、値は bridge 実行経路の計測値です。
- 出力整合性は `sample/py` 18件について `cpp/rs/cs/js/ts/go/java/swift/kotlin/php/nim` 全言語で一致確認済みです(`tools/runtime_parity_check.py` の S3〜S7 検証ログ)。
- PHP 列は 2026-03-22 に fresh transpile + `php -d memory_limit=8G` で計測しました(`warmup=0`、`repeat=1`)。
- Nim 列は 2026-03-22 に fresh transpile + `nim c --hints:off` でコンパイル後に実行で計測しました(`warmup=0`、`repeat=1`)。
- Zig 列は 2026-03-22 に fresh transpile + `zig build-exe -OReleaseFast` でコンパイル後に実行で計測しました(`warmup=0`、`repeat=3`、3回の最速値)。出力一致性は画像生成16件全てでバイト単位の完全一致を確認済みです。
### 実行時の注意
- `sample/py/` を Python のまま実行する場合は、`pylib` 解決のため `PYTHONPATH=src` を付けます。
```bash
PYTHONPATH=src python3 sample/py/01_mandelbrot.py
```
### テストコードとの関係
`test/` は小規模な機能確認ケース、`sample/` は実用寄り・負荷高めケースという役割分担です。
- [`../test/fixtures`](../test/fixtures): 変換元テストコード
- [`../test/unit`](../test/unit): ユニットテスト
- `../test/transpile/`: 変換生成物の作業ディレクトリ(Git 管理外)
- GitHub 上では閲覧できません。必要な場合はローカルでトランスパイル実行して生成してください。
### parity check(出力一致検証)
`tools/check/runtime_parity_check.py` が全言語共通の parity check 正本ツールです。内部では fast parity エンジンを使い、Python 実行結果(stdout + artifact)とターゲット言語の実行結果を比較します。
```bash
# C++ のみ
python3 tools/check/runtime_parity_check.py --targets cpp --case-root sample --all-samples
# 全言語
python3 tools/check/runtime_parity_check.py \
--targets cpp,rs,cs,js,ts,go,java,kotlin,swift,ruby,lua,php,scala,nim \
--case-root sample --all-samples
```