Zinc Next: M4 benchmarks

Median of 11 runs (one warm-up), wall clock, ms. Machine: macOS-15.7.4-arm64-arm-64bit. Interpreter: zinc run of the compiled bytecode; AOT: zinc build; QuickJS: qjs on the stripped kernel; native: the old toolchain’s release build. tools/bench-m4 regenerates this file and bench/m4.json.

kernelinterpAOTQuickJSnativeAOT / nativeQuickJS / interp
fib45.321.0247.214.11.50x5.46x
nbody485.5111.92637.739.22.85x5.43x
mandelbrot103.531.3700.925.71.22x6.77x
spectralnorm764.366.64110.357.01.17x5.38x
fannkuchredux1161.4538.47480.6367.21.47x6.44x
binarytrees33.819.4109.917.41.12x3.25x
sort137.6105.3814.689.51.18x5.92x
mapset52.724.4115.915.01.63x2.20x
strings44.336.859.531.11.18x1.34x
jsonout15.810.27.16.41.59x0.45x
dynsum39.229.430.2n/an/a0.77x

Thresholds

kernelthresholdmeasuredresult
fibAOT within 3x of native1.50xpass
fibinterpreter at least 5x QuickJS5.46xpass
nbodyAOT within 3x of native2.85xpass
nbodyinterpreter at least 5x QuickJS5.43xpass
mandelbrotinterpreter at least 5x QuickJS6.77xpass
spectralnorminterpreter at least 5x QuickJS5.38xpass
fannkuchreduxinterpreter at least 5x QuickJS6.44xpass
binarytreesAOT within 3x of native1.12xpass
sortAOT within 3x of native1.18xpass
stringsinterpreter not slower than QuickJS1.34xpass
jsonoutinterpreter not slower than QuickJS0.45xLOSS
dynsuminterpreter not slower than QuickJS0.77xLOSS

Resources (one extra run per cell)

kernelinterp RSS MBAOT RSS MBinterp user sAOT user s
fib16.629.450.040.01
nbody17.089.730.470.10
mandelbrot16.569.440.090.02
spectralnorm16.899.780.750.06
fannkuchredux16.759.581.150.53
binarytrees17.5210.110.020.01
sort40.2533.140.120.09
mapset22.0014.750.050.02
strings38.3431.160.030.03
jsonout17.2010.120.010.00
dynsum18.9711.830.030.02

Edit this page on GitHub ↗