# 0.2.0 native benchmark snapshot

Captured on 2026-07-21 with the local Moon 0.1.20260713 toolchain using
`moon bench src/core src/fractal --target native --release`. These are comparison baselines, not portable
performance guarantees.

| benchmark | batch mean | approximate time/sample |
| --- | ---: | ---: |
| Classic Simplex 2D | 645.34 us / 65,536 | 9.85 ns |
| OpenSimplex2S 2D | 1.09 ms / 65,536 | 16.6 ns |
| Classic Simplex 3D | 1.15 ms / 65,536 | 17.5 ns |
| Classic Simplex 4D | 2.15 ms / 65,536 | 32.8 ns |
| `fill2` 256x256, caller buffer | 964.31 us / 65,536 | 14.7 ns |
| `fill3` 32x32x32, caller buffer | 1.03 ms / 32,768 | 31.4 ns |
| fBm 2D, 6 octaves | 555.67 us / 4,096 | 135.7 ns |
| Domain warp 2D, single | 242.46 us / 4,096 | 59.2 ns |
| fBm 3D, 6 octaves | 1.09 ms / 4,096 | 266.1 ns |
| fBm 4D, 6 octaves | 980.97 us / 4,096 | 239.5 ns |
| Domain warp 3D, progressive 3 octaves | 1.89 ms / 4,096 | 461.4 ns |

The buffer allocation for `fill2`/`fill3` is outside the measured closure.
The functions write into caller-owned storage and perform no per-sample heap
allocation.

The 0.1.1 snapshot measured Classic 2D at about 23.8 ns/sample and legacy 2D
domain warp at about 56 us/sample. The old warp rebuilt its permutation table
for every sample, so it is useful as a migration baseline but not an
algorithm-for-algorithm comparison.
