Silverfir-nano in wasmi-benchmarks — Apple M4

A local run of the upstream wasmi-benchmarks suite on an Apple M4: both Silverfir-nano tiers against every other engine the suite builds on macOS arm64, over 21 execution and 7 startup workloads. Each chart holds every engine that ran that workload, with the measured times on the bars.

  • Host Apple M4 (4P + 6E), 16 GB, macOS 26.5.2, on battery
  • Silverfir-nano 1850f2f9 (main)
  • wasmi-benchmarks ee13941
  • Toolchain rustc 1.97.1 stable, LLVM 22.1.6
  • Profile bench — opt-level 3, fat LTO, 1 CGU
  • Sampling Criterion: 10 samples, 1 s warm-up, 2 s measurement
  • Run 2026-08-05, one process per benchmark group
  • Engines 29 configurations, 22 of them in the execution benchmarks

Optimizing JIT class

silverfir-nano.jit

#1of 6

Fastest on 10 of 20 execution cases. The next engine, wasmer.cranelift, averages 1.20× its time.

Interpreter class

silverfir-nano.interpreter

#1of 16

Fastest on 18 of 18 execution cases. The next engine, wasm3.eager, averages 1.73× its time.

Startup rank, JIT class

4/6

31.5× the time of v8, the fastest JIT to start

Startup rank, interpreter class

18/23

20.0× the time of wasmi-v1.lazy.unchecked

Engines compared

22 engines

21 execution cases, 7 startup cases

Execution — by engine class

The execution benchmarks time calls into an already instantiated module; compilation and instantiation stay outside the timed loop. Absolute times differ by orders of magnitude between workloads, so a cross-workload summary has to be relative: each engine is scored against whichever engine won that case, those per-case ratios are combined with a geometric mean, and the result is divided by the fastest engine in the class — so the leader reads 1.00× and every other bar is how many times longer that engine takes on average. JITs and interpreters get their own chart and their own leader: the two classes are two orders of magnitude apart, and on one axis every JIT collapses into the same stub. The per-case charts below carry the measured times.

JIT execution speed

Geometric mean over the 20 cases every JIT ran

Silverfir-nanov8wasmtime.craneliftOther engines
× silverfir-nano.jit — lower is better silverfir-nano.jit optimizing JIT 1.00× silverfir-nano.jit — optimizing JIT class leader, fastest on 10 of 20 cases wasmer.cranelift optimizing JIT 1.20× wasmer.cranelift — optimizing JIT 1.20× the time of silverfir-nano.jit, geomean over 20 cases fastest on 2 of them v8 multi-tier JIT 1.20× v8 — multi-tier JIT 1.20× the time of silverfir-nano.jit, geomean over 20 cases fastest on 5 of them wasmtime.cranelift optimizing JIT 1.25× wasmtime.cranelift — optimizing JIT 1.25× the time of silverfir-nano.jit, geomean over 20 cases fastest on 3 of them wasmtime.winch baseline JIT 2.93× wasmtime.winch — baseline JIT 2.93× the time of silverfir-nano.jit, geomean over 20 cases fastest on 0 of them wasmer.singlepass baseline JIT 4.36× wasmer.singlepass — baseline JIT 4.36× the time of silverfir-nano.jit, geomean over 20 cases fastest on 0 of them

Each bar is the geometric mean of the per-case time ratio against the class leader, over the cases both engines ran.

Interpreter execution speed

Geometric mean over the 18 cases every interpreter ran

Silverfir-nanowasm3.eagerwasmi-v2.eager.checkedOther engines
10× 20× 30× × silverfir-nano.interpreter — lower is better silverfir-nano.interpreter 1.00× silverfir-nano.interpreter — interpreter class leader, fastest on 18 of 18 cases wasm3.eager 1.73× wasm3.eager — interpreter 1.73× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wasmi-v2.eager.checked 1.94× wasmi-v2.eager.checked — interpreter 1.94× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wamr 2.31× wamr — interpreter 2.31× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them stitch 2.45× stitch — interpreter 2.45× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wasmi-v1.eager.checked 2.55× wasmi-v1.eager.checked — interpreter 2.55× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wasmi-v0.32 2.89× wasmi-v0.32 — interpreter 2.89× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wasmtime.pulley 3.98× wasmtime.pulley — interpreter 3.98× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wasmi-v0.31 5.39× wasmi-v0.31 — interpreter 5.39× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them fizzy 5.98× fizzy — interpreter 5.98× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them tinywasm 6.78× tinywasm — interpreter 6.78× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them spacewasm 11.1× spacewasm — interpreter 11.1× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them submilli-wasm 12.1× submilli-wasm — interpreter 12.1× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them toywasm 21.4× toywasm — interpreter 21.4× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them dlr-wasm-interpreter 22.7× dlr-wasm-interpreter — interpreter 22.7× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them wasmedge 23.9× wasmedge — interpreter 23.9× the time of silverfir-nano.interpreter, geomean over 18 cases fastest on 0 of them

Same construction as the JIT chart, inside the interpreter class — the two baselines are different engines.

Execution — case by case

Measured time per workload, JITs on the left and interpreters on the right, each on its own linear axis. This is where a summary can mislead: engines trade places from one workload to the next. The colours are fixed across every chart on this page: Silverfir-nano is blue, and each of the four reference engines keeps a hue of its own — wasmtime.cranelift orange and v8 green among the JITs, wasm3.eager amber and wasmi-v2.eager.checked pink among the interpreters.

execute/argon2input 3000

JIT

6 engines

0 20 40 60 time in ms — lower is better silverfir-nano.jit 5.13 ms silverfir-nano.jit — optimizing JIT 5.13 ms 1.00× the fastest engine here v8 16.74 ms v8 — multi-tier JIT 16.74 ms 3.26× the fastest engine here wasmtime.cranelift 19.96 ms wasmtime.cranelift — optimizing JIT 19.96 ms 3.89× the fastest engine here wasmer.cranelift 20.15 ms wasmer.cranelift — optimizing JIT 20.15 ms 3.93× the fastest engine here wasmer.singlepass 31.26 ms wasmer.singlepass — baseline JIT 31.26 ms 6.10× the fastest engine here wasmtime.winch 43.45 ms wasmtime.winch — baseline JIT 43.45 ms 8.47× the fastest engine here

Interpreter

16 engines

0 1000 2000 3000 time in ms — lower is better silverfir-nano.interpreter 106.88 ms silverfir-nano.interpreter — interpreter 106.88 ms 1.00× the fastest engine here wasm3.eager 157.03 ms wasm3.eager — interpreter 157.03 ms 1.47× the fastest engine here wamr 207.97 ms wamr — interpreter 207.97 ms 1.95× the fastest engine here wasmi-v1.eager.checked 235.75 ms wasmi-v1.eager.checked — interpreter 235.75 ms 2.21× the fastest engine here stitch 250.67 ms stitch — interpreter 250.67 ms 2.35× the fastest engine here wasmi-v2.eager.checked 260.54 ms wasmi-v2.eager.checked — interpreter 260.54 ms 2.44× the fastest engine here wasmi-v0.32 280.75 ms wasmi-v0.32 — interpreter 280.75 ms 2.63× the fastest engine here wasmtime.pulley 284.16 ms wasmtime.pulley — interpreter 284.16 ms 2.66× the fastest engine here wasmi-v0.31 633.21 ms wasmi-v0.31 — interpreter 633.21 ms 5.92× the fastest engine here tinywasm 754.25 ms tinywasm — interpreter 754.25 ms 7.06× the fastest engine here fizzy 758.14 ms fizzy — interpreter 758.14 ms 7.09× the fastest engine here submilli-wasm 1.38 s submilli-wasm — interpreter 1.38 s 12.9× the fastest engine here spacewasm 1.44 s spacewasm — interpreter 1.44 s 13.4× the fastest engine here toywasm 2.24 s toywasm — interpreter 2.24 s 21.0× the fastest engine here dlr-wasm-interpreter 2.50 s dlr-wasm-interpreter — interpreter 2.50 s 23.3× the fastest engine here wasmedge 2.72 s wasmedge — interpreter 2.72 s 25.5× the fastest engine here

execute/bulk-opsinput 5000

JIT

6 engines

0 200 400 600 time in µs — lower is better silverfir-nano.jit 437.5 µs silverfir-nano.jit — optimizing JIT 437.5 µs 1.00× the fastest engine here wasmer.cranelift 446.9 µs wasmer.cranelift — optimizing JIT 446.9 µs 1.02× the fastest engine here v8 453.3 µs v8 — multi-tier JIT 453.3 µs 1.04× the fastest engine here wasmtime.cranelift 457.1 µs wasmtime.cranelift — optimizing JIT 457.1 µs 1.04× the fastest engine here wasmer.singlepass 460.8 µs wasmer.singlepass — baseline JIT 460.8 µs 1.05× the fastest engine here wasmtime.winch 463.2 µs wasmtime.winch — baseline JIT 463.2 µs 1.06× the fastest engine here

Interpreter

14 engines

0 200 400 600 800 time in µs — lower is better silverfir-nano.interpreter 378.0 µs silverfir-nano.interpreter — interpreter 378.0 µs 1.00× the fastest engine here wasmi-v0.32 452.2 µs wasmi-v0.32 — interpreter 452.2 µs 1.20× the fastest engine here wasm3.eager 460.4 µs wasm3.eager — interpreter 460.4 µs 1.22× the fastest engine here stitch 466.9 µs stitch — interpreter 466.9 µs 1.23× the fastest engine here wasmi-v1.eager.checked 471.1 µs wasmi-v1.eager.checked — interpreter 471.1 µs 1.25× the fastest engine here wasmi-v2.eager.checked 482.4 µs wasmi-v2.eager.checked — interpreter 482.4 µs 1.28× the fastest engine here wamr 484.3 µs wamr — interpreter 484.3 µs 1.28× the fastest engine here wasmi-v0.31 544.6 µs wasmi-v0.31 — interpreter 544.6 µs 1.44× the fastest engine here tinywasm 571.1 µs tinywasm — interpreter 571.1 µs 1.51× the fastest engine here submilli-wasm 610.2 µs submilli-wasm — interpreter 610.2 µs 1.61× the fastest engine here wasmtime.pulley 749.9 µs wasmtime.pulley — interpreter 749.9 µs 1.98× the fastest engine here dlr-wasm-interpreter 764.0 µs dlr-wasm-interpreter — interpreter 764.0 µs 2.02× the fastest engine here toywasm 772.1 µs toywasm — interpreter 772.1 µs 2.04× the fastest engine here wasmedge 798.3 µs wasmedge — interpreter 798.3 µs 2.11× the fastest engine here

execute/compressioninput 152089

JIT

6 engines

0 2 4 6 8 time in ms — lower is better silverfir-nano.jit 4.56 ms silverfir-nano.jit — optimizing JIT 4.56 ms 1.00× the fastest engine here wasmtime.cranelift 4.74 ms wasmtime.cranelift — optimizing JIT 4.74 ms 1.04× the fastest engine here wasmer.cranelift 4.74 ms wasmer.cranelift — optimizing JIT 4.74 ms 1.04× the fastest engine here v8 4.96 ms v8 — multi-tier JIT 4.96 ms 1.09× the fastest engine here wasmtime.winch 6.68 ms wasmtime.winch — baseline JIT 6.68 ms 1.46× the fastest engine here wasmer.singlepass 7.25 ms wasmer.singlepass — baseline JIT 7.25 ms 1.59× the fastest engine here

Interpreter

16 engines

0 100 200 300 400 time in ms — lower is better silverfir-nano.interpreter 16.00 ms silverfir-nano.interpreter — interpreter 16.00 ms 1.00× the fastest engine here wasm3.eager 22.48 ms wasm3.eager — interpreter 22.48 ms 1.41× the fastest engine here wasmi-v1.eager.checked 30.55 ms wasmi-v1.eager.checked — interpreter 30.55 ms 1.91× the fastest engine here wamr 36.53 ms wamr — interpreter 36.53 ms 2.28× the fastest engine here wasmi-v0.32 37.43 ms wasmi-v0.32 — interpreter 37.43 ms 2.34× the fastest engine here wasmi-v2.eager.checked 37.62 ms wasmi-v2.eager.checked — interpreter 37.62 ms 2.35× the fastest engine here stitch 41.93 ms stitch — interpreter 41.93 ms 2.62× the fastest engine here wasmtime.pulley 51.70 ms wasmtime.pulley — interpreter 51.70 ms 3.23× the fastest engine here fizzy 85.27 ms fizzy — interpreter 85.27 ms 5.33× the fastest engine here wasmi-v0.31 101.45 ms wasmi-v0.31 — interpreter 101.45 ms 6.34× the fastest engine here tinywasm 110.86 ms tinywasm — interpreter 110.86 ms 6.93× the fastest engine here spacewasm 163.40 ms spacewasm — interpreter 163.40 ms 10.2× the fastest engine here submilli-wasm 171.21 ms submilli-wasm — interpreter 171.21 ms 10.7× the fastest engine here toywasm 303.01 ms toywasm — interpreter 303.01 ms 18.9× the fastest engine here wasmedge 346.36 ms wasmedge — interpreter 346.36 ms 21.6× the fastest engine here dlr-wasm-interpreter 358.13 ms dlr-wasm-interpreter — interpreter 358.13 ms 22.4× the fastest engine here

execute/counter-globalinput 500000

JIT

6 engines

0 250 500 750 1000 time in µs — lower is better v8 277.0 µs v8 — multi-tier JIT 277.0 µs 1.00× the fastest engine here silverfir-nano.jit 427.8 µs silverfir-nano.jit — optimizing JIT 427.8 µs 1.54× the fastest engine here wasmtime.cranelift 447.3 µs wasmtime.cranelift — optimizing JIT 447.3 µs 1.61× the fastest engine here wasmer.cranelift 451.9 µs wasmer.cranelift — optimizing JIT 451.9 µs 1.63× the fastest engine here wasmtime.winch 524.2 µs wasmtime.winch — baseline JIT 524.2 µs 1.89× the fastest engine here wasmer.singlepass 904.4 µs wasmer.singlepass — baseline JIT 904.4 µs 3.26× the fastest engine here

Interpreter

16 engines

0 5 10 15 time in ms — lower is better silverfir-nano.interpreter 652.8 µs silverfir-nano.interpreter — interpreter 652.8 µs 1.00× the fastest engine here wasmi-v2.eager.checked 1.04 ms wasmi-v2.eager.checked — interpreter 1.04 ms 1.60× the fastest engine here wasm3.eager 1.28 ms wasm3.eager — interpreter 1.28 ms 1.96× the fastest engine here wasmi-v1.eager.checked 1.74 ms wasmi-v1.eager.checked — interpreter 1.74 ms 2.66× the fastest engine here wamr 1.80 ms wamr — interpreter 1.80 ms 2.76× the fastest engine here fizzy 1.99 ms fizzy — interpreter 1.99 ms 3.04× the fastest engine here wasmi-v0.32 1.99 ms wasmi-v0.32 — interpreter 1.99 ms 3.04× the fastest engine here wasmtime.pulley 2.00 ms wasmtime.pulley — interpreter 2.00 ms 3.06× the fastest engine here wasmi-v0.31 2.24 ms wasmi-v0.31 — interpreter 2.24 ms 3.43× the fastest engine here stitch 3.44 ms stitch — interpreter 3.44 ms 5.26× the fastest engine here tinywasm 4.95 ms tinywasm — interpreter 4.95 ms 7.58× the fastest engine here spacewasm 5.80 ms spacewasm — interpreter 5.80 ms 8.88× the fastest engine here submilli-wasm 7.89 ms submilli-wasm — interpreter 7.89 ms 12.1× the fastest engine here toywasm 10.87 ms toywasm — interpreter 10.87 ms 16.7× the fastest engine here dlr-wasm-interpreter 11.05 ms dlr-wasm-interpreter — interpreter 11.05 ms 16.9× the fastest engine here wasmedge 11.16 ms wasmedge — interpreter 11.16 ms 17.1× the fastest engine here

execute/counter-localinput 1000000

JIT

6 engines

0 200 400 600 800 time in µs — lower is better wasmtime.cranelift 248.1 µs wasmtime.cranelift — optimizing JIT 248.1 µs 1.00× the fastest engine here wasmer.cranelift 248.3 µs wasmer.cranelift — optimizing JIT 248.3 µs 1.00× the fastest engine here silverfir-nano.jit 248.8 µs silverfir-nano.jit — optimizing JIT 248.8 µs 1.00× the fastest engine here v8 252.2 µs v8 — multi-tier JIT 252.2 µs 1.02× the fastest engine here wasmer.singlepass 499.5 µs wasmer.singlepass — baseline JIT 499.5 µs 2.01× the fastest engine here wasmtime.winch 768.3 µs wasmtime.winch — baseline JIT 768.3 µs 3.10× the fastest engine here

Interpreter

16 engines

0 5 10 15 20 time in ms — lower is better silverfir-nano.interpreter 343.6 µs silverfir-nano.interpreter — interpreter 343.6 µs 1.00× the fastest engine here stitch 1.34 ms stitch — interpreter 1.34 ms 3.91× the fastest engine here wamr 1.59 ms wamr — interpreter 1.59 ms 4.63× the fastest engine here wasmi-v2.eager.checked 1.78 ms wasmi-v2.eager.checked — interpreter 1.78 ms 5.19× the fastest engine here wasmi-v0.32 1.86 ms wasmi-v0.32 — interpreter 1.86 ms 5.40× the fastest engine here wasmi-v1.eager.checked 1.98 ms wasmi-v1.eager.checked — interpreter 1.98 ms 5.77× the fastest engine here wasm3.eager 2.08 ms wasm3.eager — interpreter 2.08 ms 6.04× the fastest engine here wasmi-v0.31 3.00 ms wasmi-v0.31 — interpreter 3.00 ms 8.72× the fastest engine here wasmtime.pulley 3.45 ms wasmtime.pulley — interpreter 3.45 ms 10.1× the fastest engine here tinywasm 3.53 ms tinywasm — interpreter 3.53 ms 10.3× the fastest engine here fizzy 3.77 ms fizzy — interpreter 3.77 ms 11.0× the fastest engine here submilli-wasm 6.42 ms submilli-wasm — interpreter 6.42 ms 18.7× the fastest engine here spacewasm 8.42 ms spacewasm — interpreter 8.42 ms 24.5× the fastest engine here toywasm 16.01 ms toywasm — interpreter 16.01 ms 46.6× the fastest engine here wasmedge 17.94 ms wasmedge — interpreter 17.94 ms 52.2× the fastest engine here dlr-wasm-interpreter 18.77 ms dlr-wasm-interpreter — interpreter 18.77 ms 54.6× the fastest engine here

execute/counter-paraminput 1000000

JIT

6 engines

0 0.5 1 1.5 time in ms — lower is better wasmer.cranelift 247.6 µs wasmer.cranelift — optimizing JIT 247.6 µs 1.00× the fastest engine here wasmtime.cranelift 248.3 µs wasmtime.cranelift — optimizing JIT 248.3 µs 1.00× the fastest engine here silverfir-nano.jit 249.1 µs silverfir-nano.jit — optimizing JIT 249.1 µs 1.01× the fastest engine here v8 252.0 µs v8 — multi-tier JIT 252.0 µs 1.02× the fastest engine here wasmer.singlepass 823.0 µs wasmer.singlepass — baseline JIT 823.0 µs 3.32× the fastest engine here wasmtime.winch 1.29 ms wasmtime.winch — baseline JIT 1.29 ms 5.21× the fastest engine here

Interpreter

14 engines

0 5 10 15 20 time in ms — lower is better silverfir-nano.interpreter 343.5 µs silverfir-nano.interpreter — interpreter 343.5 µs 1.00× the fastest engine here wasmi-v2.eager.checked 1.25 ms wasmi-v2.eager.checked — interpreter 1.25 ms 3.64× the fastest engine here wamr 2.00 ms wamr — interpreter 2.00 ms 5.83× the fastest engine here wasm3.eager 2.24 ms wasm3.eager — interpreter 2.24 ms 6.51× the fastest engine here wasmi-v1.eager.checked 2.48 ms wasmi-v1.eager.checked — interpreter 2.48 ms 7.22× the fastest engine here tinywasm 2.75 ms tinywasm — interpreter 2.75 ms 8.00× the fastest engine here wasmi-v0.31 2.97 ms wasmi-v0.31 — interpreter 2.97 ms 8.65× the fastest engine here wasmi-v0.32 2.98 ms wasmi-v0.32 — interpreter 2.98 ms 8.68× the fastest engine here stitch 3.03 ms stitch — interpreter 3.03 ms 8.81× the fastest engine here wasmtime.pulley 3.45 ms wasmtime.pulley — interpreter 3.45 ms 10.0× the fastest engine here submilli-wasm 6.15 ms submilli-wasm — interpreter 6.15 ms 17.9× the fastest engine here toywasm 16.12 ms toywasm — interpreter 16.12 ms 46.9× the fastest engine here dlr-wasm-interpreter 17.87 ms dlr-wasm-interpreter — interpreter 17.87 ms 52.0× the fastest engine here wasmedge 18.67 ms wasmedge — interpreter 18.67 ms 54.3× the fastest engine here

execute/fibonacci-iterinput 2000000

JIT

6 engines

0 1 2 3 time in ms — lower is better wasmtime.cranelift 496.7 µs wasmtime.cranelift — optimizing JIT 496.7 µs 1.00× the fastest engine here silverfir-nano.jit 497.1 µs silverfir-nano.jit — optimizing JIT 497.1 µs 1.00× the fastest engine here wasmer.cranelift 497.1 µs wasmer.cranelift — optimizing JIT 497.1 µs 1.00× the fastest engine here v8 503.5 µs v8 — multi-tier JIT 503.5 µs 1.01× the fastest engine here wasmer.singlepass 1.00 ms wasmer.singlepass — baseline JIT 1.00 ms 2.02× the fastest engine here wasmtime.winch 2.81 ms wasmtime.winch — baseline JIT 2.81 ms 5.65× the fastest engine here

Interpreter

16 engines

0 50 100 150 time in ms — lower is better silverfir-nano.interpreter 2.44 ms silverfir-nano.interpreter — interpreter 2.44 ms 1.00× the fastest engine here wasmi-v2.eager.checked 4.13 ms wasmi-v2.eager.checked — interpreter 4.13 ms 1.69× the fastest engine here wasm3.eager 5.08 ms wasm3.eager — interpreter 5.08 ms 2.08× the fastest engine here wasmi-v0.32 5.19 ms wasmi-v0.32 — interpreter 5.19 ms 2.13× the fastest engine here wamr 5.31 ms wamr — interpreter 5.31 ms 2.18× the fastest engine here wasmi-v1.eager.checked 6.95 ms wasmi-v1.eager.checked — interpreter 6.95 ms 2.85× the fastest engine here stitch 12.86 ms stitch — interpreter 12.86 ms 5.28× the fastest engine here tinywasm 12.93 ms tinywasm — interpreter 12.93 ms 5.31× the fastest engine here wasmtime.pulley 13.43 ms wasmtime.pulley — interpreter 13.43 ms 5.51× the fastest engine here wasmi-v0.31 28.32 ms wasmi-v0.31 — interpreter 28.32 ms 11.6× the fastest engine here fizzy 36.91 ms fizzy — interpreter 36.91 ms 15.1× the fastest engine here submilli-wasm 46.75 ms submilli-wasm — interpreter 46.75 ms 19.2× the fastest engine here spacewasm 48.66 ms spacewasm — interpreter 48.66 ms 20.0× the fastest engine here toywasm 76.38 ms toywasm — interpreter 76.38 ms 31.3× the fastest engine here dlr-wasm-interpreter 103.18 ms dlr-wasm-interpreter — interpreter 103.18 ms 42.3× the fastest engine here wasmedge 103.83 ms wasmedge — interpreter 103.83 ms 42.6× the fastest engine here

execute/fibonacci-recinput 30

JIT

6 engines

0 2.5 5 7.5 10 time in ms — lower is better v8 1.49 ms v8 — multi-tier JIT 1.49 ms 1.00× the fastest engine here silverfir-nano.jit 1.82 ms silverfir-nano.jit — optimizing JIT 1.82 ms 1.22× the fastest engine here wasmer.cranelift 2.76 ms wasmer.cranelift — optimizing JIT 2.76 ms 1.85× the fastest engine here wasmtime.cranelift 2.80 ms wasmtime.cranelift — optimizing JIT 2.80 ms 1.88× the fastest engine here wasmer.singlepass 5.48 ms wasmer.singlepass — baseline JIT 5.48 ms 3.67× the fastest engine here wasmtime.winch 8.66 ms wasmtime.winch — baseline JIT 8.66 ms 5.81× the fastest engine here

Interpreter

16 engines

0 50 100 150 time in ms — lower is better silverfir-nano.interpreter 8.15 ms silverfir-nano.interpreter — interpreter 8.15 ms 1.00× the fastest engine here wasmi-v2.eager.checked 15.12 ms wasmi-v2.eager.checked — interpreter 15.12 ms 1.86× the fastest engine here stitch 16.43 ms stitch — interpreter 16.43 ms 2.02× the fastest engine here wamr 22.18 ms wamr — interpreter 22.18 ms 2.72× the fastest engine here wasm3.eager 24.15 ms wasm3.eager — interpreter 24.15 ms 2.96× the fastest engine here wasmi-v0.32 28.27 ms wasmi-v0.32 — interpreter 28.27 ms 3.47× the fastest engine here tinywasm 30.64 ms tinywasm — interpreter 30.64 ms 3.76× the fastest engine here wasmi-v0.31 32.65 ms wasmi-v0.31 — interpreter 32.65 ms 4.01× the fastest engine here wasmi-v1.eager.checked 32.93 ms wasmi-v1.eager.checked — interpreter 32.93 ms 4.04× the fastest engine here wasmtime.pulley 38.53 ms wasmtime.pulley — interpreter 38.53 ms 4.73× the fastest engine here fizzy 41.66 ms fizzy — interpreter 41.66 ms 5.11× the fastest engine here spacewasm 55.68 ms spacewasm — interpreter 55.68 ms 6.84× the fastest engine here submilli-wasm 92.72 ms submilli-wasm — interpreter 92.72 ms 11.4× the fastest engine here wasmedge 118.85 ms wasmedge — interpreter 118.85 ms 14.6× the fastest engine here dlr-wasm-interpreter 125.73 ms dlr-wasm-interpreter — interpreter 125.73 ms 15.4× the fastest engine here toywasm 149.18 ms toywasm — interpreter 149.18 ms 18.3× the fastest engine here

execute/fibonacci-tailinput 1000000

JIT

3 engines

0 200 400 600 800 time in µs — lower is better silverfir-nano.jit 251.7 µs silverfir-nano.jit — optimizing JIT 251.7 µs 1.00× the fastest engine here v8 299.0 µs v8 — multi-tier JIT 299.0 µs 1.19× the fastest engine here wasmtime.cranelift 650.0 µs wasmtime.cranelift — optimizing JIT 650.0 µs 2.58× the fastest engine here

Interpreter

11 engines

0 20 40 60 time in ms — lower is better silverfir-nano.interpreter 2.63 ms silverfir-nano.interpreter — interpreter 2.63 ms 1.00× the fastest engine here wasmi-v2.eager.checked 5.40 ms wasmi-v2.eager.checked — interpreter 5.40 ms 2.05× the fastest engine here tinywasm 9.65 ms tinywasm — interpreter 9.65 ms 3.66× the fastest engine here wasmi-v0.32 9.77 ms wasmi-v0.32 — interpreter 9.77 ms 3.71× the fastest engine here wasmi-v0.31 10.77 ms wasmi-v0.31 — interpreter 10.77 ms 4.09× the fastest engine here wasmtime.pulley 10.81 ms wasmtime.pulley — interpreter 10.81 ms 4.11× the fastest engine here wasmi-v1.eager.checked 11.23 ms wasmi-v1.eager.checked — interpreter 11.23 ms 4.26× the fastest engine here wamr 21.45 ms wamr — interpreter 21.45 ms 8.15× the fastest engine here submilli-wasm 30.62 ms submilli-wasm — interpreter 30.62 ms 11.6× the fastest engine here wasmedge 47.30 ms wasmedge — interpreter 47.30 ms 18.0× the fastest engine here toywasm 53.11 ms toywasm — interpreter 53.11 ms 20.2× the fastest engine here

execute/json-parseinput 1727205

JIT

6 engines

0 2 4 6 8 time in ms — lower is better silverfir-nano.jit 2.69 ms silverfir-nano.jit — optimizing JIT 2.69 ms 1.00× the fastest engine here v8 2.80 ms v8 — multi-tier JIT 2.80 ms 1.04× the fastest engine here wasmtime.cranelift 2.89 ms wasmtime.cranelift — optimizing JIT 2.89 ms 1.07× the fastest engine here wasmer.cranelift 3.05 ms wasmer.cranelift — optimizing JIT 3.05 ms 1.13× the fastest engine here wasmer.singlepass 6.00 ms wasmer.singlepass — baseline JIT 6.00 ms 2.23× the fastest engine here wasmtime.winch 7.64 ms wasmtime.winch — baseline JIT 7.64 ms 2.84× the fastest engine here

Interpreter

16 engines

0 100 200 300 400 time in ms — lower is better silverfir-nano.interpreter 19.87 ms silverfir-nano.interpreter — interpreter 19.87 ms 1.00× the fastest engine here wasm3.eager 29.96 ms wasm3.eager — interpreter 29.96 ms 1.51× the fastest engine here wasmi-v1.eager.checked 36.40 ms wasmi-v1.eager.checked — interpreter 36.40 ms 1.83× the fastest engine here wasmi-v2.eager.checked 40.51 ms wasmi-v2.eager.checked — interpreter 40.51 ms 2.04× the fastest engine here wasmi-v0.32 45.06 ms wasmi-v0.32 — interpreter 45.06 ms 2.27× the fastest engine here stitch 48.37 ms stitch — interpreter 48.37 ms 2.43× the fastest engine here wasmtime.pulley 55.22 ms wasmtime.pulley — interpreter 55.22 ms 2.78× the fastest engine here wamr 60.31 ms wamr — interpreter 60.31 ms 3.03× the fastest engine here fizzy 92.30 ms fizzy — interpreter 92.30 ms 4.65× the fastest engine here wasmi-v0.31 99.86 ms wasmi-v0.31 — interpreter 99.86 ms 5.03× the fastest engine here tinywasm 102.28 ms tinywasm — interpreter 102.28 ms 5.15× the fastest engine here spacewasm 167.77 ms spacewasm — interpreter 167.77 ms 8.44× the fastest engine here submilli-wasm 180.17 ms submilli-wasm — interpreter 180.17 ms 9.07× the fastest engine here toywasm 337.17 ms toywasm — interpreter 337.17 ms 17.0× the fastest engine here wasmedge 344.57 ms wasmedge — interpreter 344.57 ms 17.3× the fastest engine here dlr-wasm-interpreter 352.11 ms dlr-wasm-interpreter — interpreter 352.11 ms 17.7× the fastest engine here

execute/mandelbrotinput 150

JIT

6 engines

0 200 400 600 time in ms — lower is better silverfir-nano.jit 11.67 ms silverfir-nano.jit — optimizing JIT 11.67 ms 1.00× the fastest engine here wasmer.cranelift 11.75 ms wasmer.cranelift — optimizing JIT 11.75 ms 1.01× the fastest engine here v8 12.10 ms v8 — multi-tier JIT 12.10 ms 1.04× the fastest engine here wasmtime.cranelift 12.11 ms wasmtime.cranelift — optimizing JIT 12.11 ms 1.04× the fastest engine here wasmtime.winch 33.03 ms wasmtime.winch — baseline JIT 33.03 ms 2.83× the fastest engine here wasmer.singlepass 477.15 ms wasmer.singlepass — baseline JIT 477.15 ms 40.9× the fastest engine here

Interpreter

16 engines

0 200 400 600 800 time in ms — lower is better silverfir-nano.interpreter 36.71 ms silverfir-nano.interpreter — interpreter 36.71 ms 1.00× the fastest engine here wasm3.eager 43.44 ms wasm3.eager — interpreter 43.44 ms 1.18× the fastest engine here wasmi-v2.eager.checked 69.29 ms wasmi-v2.eager.checked — interpreter 69.29 ms 1.89× the fastest engine here stitch 80.55 ms stitch — interpreter 80.55 ms 2.19× the fastest engine here wamr 110.99 ms wamr — interpreter 110.99 ms 3.02× the fastest engine here wasmi-v1.eager.checked 111.98 ms wasmi-v1.eager.checked — interpreter 111.98 ms 3.05× the fastest engine here wasmi-v0.32 121.46 ms wasmi-v0.32 — interpreter 121.46 ms 3.31× the fastest engine here wasmtime.pulley 134.23 ms wasmtime.pulley — interpreter 134.23 ms 3.66× the fastest engine here fizzy 163.86 ms fizzy — interpreter 163.86 ms 4.46× the fastest engine here tinywasm 178.10 ms tinywasm — interpreter 178.10 ms 4.85× the fastest engine here wasmi-v0.31 193.00 ms wasmi-v0.31 — interpreter 193.00 ms 5.26× the fastest engine here submilli-wasm 278.53 ms submilli-wasm — interpreter 278.53 ms 7.59× the fastest engine here spacewasm 321.70 ms spacewasm — interpreter 321.70 ms 8.76× the fastest engine here toywasm 543.84 ms toywasm — interpreter 543.84 ms 14.8× the fastest engine here dlr-wasm-interpreter 584.76 ms dlr-wasm-interpreter — interpreter 584.76 ms 15.9× the fastest engine here wasmedge 634.31 ms wasmedge — interpreter 634.31 ms 17.3× the fastest engine here

execute/matrix-mulinput 400

JIT

6 engines

0 200 400 600 time in ms — lower is better silverfir-nano.jit 28.92 ms silverfir-nano.jit — optimizing JIT 28.92 ms 1.00× the fastest engine here wasmer.cranelift 30.84 ms wasmer.cranelift — optimizing JIT 30.84 ms 1.07× the fastest engine here wasmtime.cranelift 31.47 ms wasmtime.cranelift — optimizing JIT 31.47 ms 1.09× the fastest engine here v8 49.45 ms v8 — multi-tier JIT 49.45 ms 1.71× the fastest engine here wasmtime.winch 51.84 ms wasmtime.winch — baseline JIT 51.84 ms 1.79× the fastest engine here wasmer.singlepass 450.95 ms wasmer.singlepass — baseline JIT 450.95 ms 15.6× the fastest engine here

Interpreter

16 engines

0 1000 2000 3000 4000 time in ms — lower is better silverfir-nano.interpreter 223.99 ms silverfir-nano.interpreter — interpreter 223.99 ms 1.00× the fastest engine here wasmi-v2.eager.checked 231.29 ms wasmi-v2.eager.checked — interpreter 231.29 ms 1.03× the fastest engine here stitch 242.80 ms stitch — interpreter 242.80 ms 1.08× the fastest engine here wasm3.eager 298.48 ms wasm3.eager — interpreter 298.48 ms 1.33× the fastest engine here wamr 306.52 ms wamr — interpreter 306.52 ms 1.37× the fastest engine here wasmi-v1.eager.checked 369.42 ms wasmi-v1.eager.checked — interpreter 369.42 ms 1.65× the fastest engine here wasmi-v0.32 396.34 ms wasmi-v0.32 — interpreter 396.34 ms 1.77× the fastest engine here wasmi-v0.31 662.31 ms wasmi-v0.31 — interpreter 662.31 ms 2.96× the fastest engine here fizzy 915.94 ms fizzy — interpreter 915.94 ms 4.09× the fastest engine here wasmtime.pulley 1.06 s wasmtime.pulley — interpreter 1.06 s 4.71× the fastest engine here tinywasm 1.20 s tinywasm — interpreter 1.20 s 5.34× the fastest engine here spacewasm 2.01 s spacewasm — interpreter 2.01 s 8.99× the fastest engine here submilli-wasm 2.11 s submilli-wasm — interpreter 2.11 s 9.40× the fastest engine here toywasm 3.46 s toywasm — interpreter 3.46 s 15.5× the fastest engine here dlr-wasm-interpreter 3.70 s dlr-wasm-interpreter — interpreter 3.70 s 16.5× the fastest engine here wasmedge 3.90 s wasmedge — interpreter 3.90 s 17.4× the fastest engine here

execute/nbodyinput 400

JIT

6 engines

0 200 400 600 time in ms — lower is better silverfir-nano.jit 4.84 ms silverfir-nano.jit — optimizing JIT 4.84 ms 1.00× the fastest engine here wasmtime.cranelift 5.03 ms wasmtime.cranelift — optimizing JIT 5.03 ms 1.04× the fastest engine here wasmer.cranelift 5.04 ms wasmer.cranelift — optimizing JIT 5.04 ms 1.04× the fastest engine here v8 5.22 ms v8 — multi-tier JIT 5.22 ms 1.08× the fastest engine here wasmtime.winch 15.30 ms wasmtime.winch — baseline JIT 15.30 ms 3.16× the fastest engine here wasmer.singlepass 460.03 ms wasmer.singlepass — baseline JIT 460.03 ms 95.1× the fastest engine here

Interpreter

16 engines

0 250 500 750 1000 time in ms — lower is better silverfir-nano.interpreter 42.64 ms silverfir-nano.interpreter — interpreter 42.64 ms 1.00× the fastest engine here wasmi-v2.eager.checked 51.92 ms wasmi-v2.eager.checked — interpreter 51.92 ms 1.22× the fastest engine here wasm3.eager 61.65 ms wasm3.eager — interpreter 61.65 ms 1.45× the fastest engine here stitch 65.62 ms stitch — interpreter 65.62 ms 1.54× the fastest engine here wasmi-v1.eager.checked 99.92 ms wasmi-v1.eager.checked — interpreter 99.92 ms 2.34× the fastest engine here wamr 99.98 ms wamr — interpreter 99.98 ms 2.34× the fastest engine here wasmi-v0.32 117.70 ms wasmi-v0.32 — interpreter 117.70 ms 2.76× the fastest engine here wasmtime.pulley 207.12 ms wasmtime.pulley — interpreter 207.12 ms 4.86× the fastest engine here wasmi-v0.31 207.54 ms wasmi-v0.31 — interpreter 207.54 ms 4.87× the fastest engine here fizzy 216.78 ms fizzy — interpreter 216.78 ms 5.08× the fastest engine here tinywasm 285.25 ms tinywasm — interpreter 285.25 ms 6.69× the fastest engine here spacewasm 436.94 ms spacewasm — interpreter 436.94 ms 10.2× the fastest engine here submilli-wasm 520.77 ms submilli-wasm — interpreter 520.77 ms 12.2× the fastest engine here dlr-wasm-interpreter 737.50 ms dlr-wasm-interpreter — interpreter 737.50 ms 17.3× the fastest engine here wasmedge 841.79 ms wasmedge — interpreter 841.79 ms 19.7× the fastest engine here toywasm 959.56 ms toywasm — interpreter 959.56 ms 22.5× the fastest engine here

execute/prime-sieveinput 10000000

JIT

6 engines

0 10 20 30 40 time in ms — lower is better wasmer.cranelift 16.30 ms wasmer.cranelift — optimizing JIT 16.30 ms 1.00× the fastest engine here silverfir-nano.jit 16.39 ms silverfir-nano.jit — optimizing JIT 16.39 ms 1.01× the fastest engine here wasmtime.cranelift 16.86 ms wasmtime.cranelift — optimizing JIT 16.86 ms 1.03× the fastest engine here wasmer.singlepass 25.00 ms wasmer.singlepass — baseline JIT 25.00 ms 1.53× the fastest engine here wasmtime.winch 25.09 ms wasmtime.winch — baseline JIT 25.09 ms 1.54× the fastest engine here v8 38.99 ms v8 — multi-tier JIT 38.99 ms 2.39× the fastest engine here

Interpreter

16 engines

0 1000 2000 3000 time in ms — lower is better silverfir-nano.interpreter 60.03 ms silverfir-nano.interpreter — interpreter 60.03 ms 1.00× the fastest engine here wasmi-v2.eager.checked 114.90 ms wasmi-v2.eager.checked — interpreter 114.90 ms 1.91× the fastest engine here wasm3.eager 120.31 ms wasm3.eager — interpreter 120.31 ms 2.00× the fastest engine here wasmi-v1.eager.checked 147.66 ms wasmi-v1.eager.checked — interpreter 147.66 ms 2.46× the fastest engine here wasmi-v0.32 156.64 ms wasmi-v0.32 — interpreter 156.64 ms 2.61× the fastest engine here wamr 161.27 ms wamr — interpreter 161.27 ms 2.69× the fastest engine here wasmtime.pulley 176.59 ms wasmtime.pulley — interpreter 176.59 ms 2.94× the fastest engine here stitch 188.09 ms stitch — interpreter 188.09 ms 3.13× the fastest engine here wasmi-v0.31 411.05 ms wasmi-v0.31 — interpreter 411.05 ms 6.85× the fastest engine here tinywasm 544.65 ms tinywasm — interpreter 544.65 ms 9.07× the fastest engine here fizzy 590.42 ms fizzy — interpreter 590.42 ms 9.84× the fastest engine here spacewasm 832.45 ms spacewasm — interpreter 832.45 ms 13.9× the fastest engine here submilli-wasm 950.40 ms submilli-wasm — interpreter 950.40 ms 15.8× the fastest engine here toywasm 1.41 s toywasm — interpreter 1.41 s 23.5× the fastest engine here dlr-wasm-interpreter 1.57 s dlr-wasm-interpreter — interpreter 1.57 s 26.2× the fastest engine here wasmedge 2.18 s wasmedge — interpreter 2.18 s 36.3× the fastest engine here

execute/regex-reduxinput 10245

JIT

6 engines

0 10 20 30 40 time in µs — lower is better silverfir-nano.jit 17.9 µs silverfir-nano.jit — optimizing JIT 17.9 µs 1.00× the fastest engine here wasmer.cranelift 18.0 µs wasmer.cranelift — optimizing JIT 18.0 µs 1.01× the fastest engine here v8 18.2 µs v8 — multi-tier JIT 18.2 µs 1.02× the fastest engine here wasmtime.cranelift 29.1 µs wasmtime.cranelift — optimizing JIT 29.1 µs 1.62× the fastest engine here wasmer.singlepass 30.5 µs wasmer.singlepass — baseline JIT 30.5 µs 1.70× the fastest engine here wasmtime.winch 35.9 µs wasmtime.winch — baseline JIT 35.9 µs 2.00× the fastest engine here

Interpreter

16 engines

0 0.5 1 1.5 2 time in ms — lower is better silverfir-nano.interpreter 67.7 µs silverfir-nano.interpreter — interpreter 67.7 µs 1.00× the fastest engine here wasm3.eager 106.9 µs wasm3.eager — interpreter 106.9 µs 1.58× the fastest engine here wasmi-v1.eager.checked 144.1 µs wasmi-v1.eager.checked — interpreter 144.1 µs 2.13× the fastest engine here wamr 159.7 µs wamr — interpreter 159.7 µs 2.36× the fastest engine here wasmi-v2.eager.checked 180.3 µs wasmi-v2.eager.checked — interpreter 180.3 µs 2.66× the fastest engine here wasmtime.pulley 235.5 µs wasmtime.pulley — interpreter 235.5 µs 3.48× the fastest engine here stitch 247.1 µs stitch — interpreter 247.1 µs 3.65× the fastest engine here fizzy 306.1 µs fizzy — interpreter 306.1 µs 4.52× the fastest engine here wasmi-v0.32 397.2 µs wasmi-v0.32 — interpreter 397.2 µs 5.87× the fastest engine here wasmi-v0.31 624.1 µs wasmi-v0.31 — interpreter 624.1 µs 9.22× the fastest engine here tinywasm 668.5 µs tinywasm — interpreter 668.5 µs 9.88× the fastest engine here submilli-wasm 735.0 µs submilli-wasm — interpreter 735.0 µs 10.9× the fastest engine here spacewasm 759.1 µs spacewasm — interpreter 759.1 µs 11.2× the fastest engine here toywasm 1.72 ms toywasm — interpreter 1.72 ms 25.3× the fastest engine here wasmedge 1.75 ms wasmedge — interpreter 1.75 ms 25.9× the fastest engine here dlr-wasm-interpreter 1.79 ms dlr-wasm-interpreter — interpreter 1.79 ms 26.4× the fastest engine here

execute/reverse-complementinput 10245

JIT

6 engines

0 10 20 30 40 time in µs — lower is better silverfir-nano.jit 6.9 µs silverfir-nano.jit — optimizing JIT 6.9 µs 1.00× the fastest engine here v8 14.0 µs v8 — multi-tier JIT 14.0 µs 2.04× the fastest engine here wasmer.cranelift 16.4 µs wasmer.cranelift — optimizing JIT 16.4 µs 2.40× the fastest engine here wasmtime.cranelift 16.6 µs wasmtime.cranelift — optimizing JIT 16.6 µs 2.41× the fastest engine here wasmer.singlepass 33.9 µs wasmer.singlepass — baseline JIT 33.9 µs 4.95× the fastest engine here wasmtime.winch 38.0 µs wasmtime.winch — baseline JIT 38.0 µs 5.54× the fastest engine here

Interpreter

16 engines

0 1 2 3 time in ms — lower is better silverfir-nano.interpreter 93.6 µs silverfir-nano.interpreter — interpreter 93.6 µs 1.00× the fastest engine here wamr 171.4 µs wamr — interpreter 171.4 µs 1.83× the fastest engine here wasm3.eager 188.9 µs wasm3.eager — interpreter 188.9 µs 2.02× the fastest engine here wasmi-v1.eager.checked 210.9 µs wasmi-v1.eager.checked — interpreter 210.9 µs 2.25× the fastest engine here wasmi-v2.eager.checked 221.9 µs wasmi-v2.eager.checked — interpreter 221.9 µs 2.37× the fastest engine here stitch 230.0 µs stitch — interpreter 230.0 µs 2.46× the fastest engine here wasmi-v0.32 280.5 µs wasmi-v0.32 — interpreter 280.5 µs 3.00× the fastest engine here wasmtime.pulley 422.6 µs wasmtime.pulley — interpreter 422.6 µs 4.52× the fastest engine here wasmi-v0.31 588.3 µs wasmi-v0.31 — interpreter 588.3 µs 6.29× the fastest engine here tinywasm 679.0 µs tinywasm — interpreter 679.0 µs 7.25× the fastest engine here fizzy 682.2 µs fizzy — interpreter 682.2 µs 7.29× the fastest engine here spacewasm 1.15 ms spacewasm — interpreter 1.15 ms 12.3× the fastest engine here submilli-wasm 1.16 ms submilli-wasm — interpreter 1.16 ms 12.4× the fastest engine here toywasm 2.08 ms toywasm — interpreter 2.08 ms 22.2× the fastest engine here dlr-wasm-interpreter 2.33 ms dlr-wasm-interpreter — interpreter 2.33 ms 24.9× the fastest engine here wasmedge 2.56 ms wasmedge — interpreter 2.56 ms 27.4× the fastest engine here

execute/sort-dyninput 400000

JIT

6 engines

0 20 40 60 80 time in ms — lower is better v8 17.19 ms v8 — multi-tier JIT 17.19 ms 1.00× the fastest engine here wasmer.cranelift 17.48 ms wasmer.cranelift — optimizing JIT 17.48 ms 1.02× the fastest engine here wasmtime.cranelift 19.64 ms wasmtime.cranelift — optimizing JIT 19.64 ms 1.14× the fastest engine here silverfir-nano.jit 19.92 ms silverfir-nano.jit — optimizing JIT 19.92 ms 1.16× the fastest engine here wasmtime.winch 60.19 ms wasmtime.winch — baseline JIT 60.19 ms 3.50× the fastest engine here wasmer.singlepass 64.20 ms wasmer.singlepass — baseline JIT 64.20 ms 3.73× the fastest engine here

Interpreter

16 engines

0 1000 2000 3000 time in ms — lower is better silverfir-nano.interpreter 105.22 ms silverfir-nano.interpreter — interpreter 105.22 ms 1.00× the fastest engine here wasm3.eager 168.34 ms wasm3.eager — interpreter 168.34 ms 1.60× the fastest engine here wasmi-v2.eager.checked 188.31 ms wasmi-v2.eager.checked — interpreter 188.31 ms 1.79× the fastest engine here stitch 189.94 ms stitch — interpreter 189.94 ms 1.81× the fastest engine here wamr 254.28 ms wamr — interpreter 254.28 ms 2.42× the fastest engine here wasmi-v1.eager.checked 305.03 ms wasmi-v1.eager.checked — interpreter 305.03 ms 2.90× the fastest engine here wasmi-v0.32 314.84 ms wasmi-v0.32 — interpreter 314.84 ms 2.99× the fastest engine here wasmi-v0.31 435.21 ms wasmi-v0.31 — interpreter 435.21 ms 4.14× the fastest engine here wasmtime.pulley 503.00 ms wasmtime.pulley — interpreter 503.00 ms 4.78× the fastest engine here fizzy 527.26 ms fizzy — interpreter 527.26 ms 5.01× the fastest engine here tinywasm 837.55 ms tinywasm — interpreter 837.55 ms 7.96× the fastest engine here spacewasm 920.46 ms spacewasm — interpreter 920.46 ms 8.75× the fastest engine here submilli-wasm 1.34 s submilli-wasm — interpreter 1.34 s 12.7× the fastest engine here dlr-wasm-interpreter 1.90 s dlr-wasm-interpreter — interpreter 1.90 s 18.1× the fastest engine here toywasm 2.13 s toywasm — interpreter 2.13 s 20.2× the fastest engine here wasmedge 2.35 s wasmedge — interpreter 2.35 s 22.3× the fastest engine here

execute/sortinput 1000000

JIT

6 engines

0 20 40 60 time in ms — lower is better silverfir-nano.jit 11.43 ms silverfir-nano.jit — optimizing JIT 11.43 ms 1.00× the fastest engine here wasmtime.cranelift 17.93 ms wasmtime.cranelift — optimizing JIT 17.93 ms 1.57× the fastest engine here wasmer.cranelift 18.99 ms wasmer.cranelift — optimizing JIT 18.99 ms 1.66× the fastest engine here v8 27.71 ms v8 — multi-tier JIT 27.71 ms 2.42× the fastest engine here wasmtime.winch 52.10 ms wasmtime.winch — baseline JIT 52.10 ms 4.56× the fastest engine here wasmer.singlepass 53.06 ms wasmer.singlepass — baseline JIT 53.06 ms 4.64× the fastest engine here

Interpreter

16 engines

0 1000 2000 3000 4000 time in ms — lower is better silverfir-nano.interpreter 151.85 ms silverfir-nano.interpreter — interpreter 151.85 ms 1.00× the fastest engine here wasm3.eager 172.42 ms wasm3.eager — interpreter 172.42 ms 1.14× the fastest engine here wasmi-v2.eager.checked 189.67 ms wasmi-v2.eager.checked — interpreter 189.67 ms 1.25× the fastest engine here stitch 215.82 ms stitch — interpreter 215.82 ms 1.42× the fastest engine here wamr 256.82 ms wamr — interpreter 256.82 ms 1.69× the fastest engine here wasmi-v1.eager.checked 260.75 ms wasmi-v1.eager.checked — interpreter 260.75 ms 1.72× the fastest engine here wasmtime.pulley 325.88 ms wasmtime.pulley — interpreter 325.88 ms 2.15× the fastest engine here wasmi-v0.32 372.81 ms wasmi-v0.32 — interpreter 372.81 ms 2.46× the fastest engine here wasmi-v0.31 547.27 ms wasmi-v0.31 — interpreter 547.27 ms 3.60× the fastest engine here fizzy 767.29 ms fizzy — interpreter 767.29 ms 5.05× the fastest engine here tinywasm 1.01 s tinywasm — interpreter 1.01 s 6.62× the fastest engine here spacewasm 1.34 s spacewasm — interpreter 1.34 s 8.83× the fastest engine here submilli-wasm 1.73 s submilli-wasm — interpreter 1.73 s 11.4× the fastest engine here dlr-wasm-interpreter 2.56 s dlr-wasm-interpreter — interpreter 2.56 s 16.9× the fastest engine here toywasm 2.76 s toywasm — interpreter 2.76 s 18.2× the fastest engine here wasmedge 3.17 s wasmedge — interpreter 3.17 s 20.9× the fastest engine here

execute/spectralnorminput 500

JIT

6 engines

0 100 200 300 time in ms — lower is better wasmtime.cranelift 5.67 ms wasmtime.cranelift — optimizing JIT 5.67 ms 1.00× the fastest engine here wasmer.cranelift 5.73 ms wasmer.cranelift — optimizing JIT 5.73 ms 1.01× the fastest engine here silverfir-nano.jit 6.03 ms silverfir-nano.jit — optimizing JIT 6.03 ms 1.06× the fastest engine here v8 6.68 ms v8 — multi-tier JIT 6.68 ms 1.18× the fastest engine here wasmtime.winch 24.39 ms wasmtime.winch — baseline JIT 24.39 ms 4.30× the fastest engine here wasmer.singlepass 260.19 ms wasmer.singlepass — baseline JIT 260.19 ms 45.9× the fastest engine here

Interpreter

16 engines

0 500 1000 1500 time in ms — lower is better silverfir-nano.interpreter 51.85 ms silverfir-nano.interpreter — interpreter 51.85 ms 1.00× the fastest engine here wasm3.eager 78.52 ms wasm3.eager — interpreter 78.52 ms 1.51× the fastest engine here wamr 85.84 ms wamr — interpreter 85.84 ms 1.66× the fastest engine here stitch 133.46 ms stitch — interpreter 133.46 ms 2.57× the fastest engine here wasmi-v0.32 136.85 ms wasmi-v0.32 — interpreter 136.85 ms 2.64× the fastest engine here wasmi-v2.eager.checked 145.00 ms wasmi-v2.eager.checked — interpreter 145.00 ms 2.80× the fastest engine here wasmi-v1.eager.checked 166.03 ms wasmi-v1.eager.checked — interpreter 166.03 ms 3.20× the fastest engine here wasmi-v0.31 245.48 ms wasmi-v0.31 — interpreter 245.48 ms 4.73× the fastest engine here tinywasm 290.43 ms tinywasm — interpreter 290.43 ms 5.60× the fastest engine here wasmtime.pulley 325.87 ms wasmtime.pulley — interpreter 325.87 ms 6.29× the fastest engine here fizzy 414.63 ms fizzy — interpreter 414.63 ms 8.00× the fastest engine here spacewasm 693.71 ms spacewasm — interpreter 693.71 ms 13.4× the fastest engine here submilli-wasm 742.03 ms submilli-wasm — interpreter 742.03 ms 14.3× the fastest engine here toywasm 1.27 s toywasm — interpreter 1.27 s 24.5× the fastest engine here dlr-wasm-interpreter 1.40 s dlr-wasm-interpreter — interpreter 1.40 s 27.0× the fastest engine here wasmedge 1.47 s wasmedge — interpreter 1.47 s 28.4× the fastest engine here

execute/tiny-keccak

JIT

6 engines

0 10 20 30 time in µs — lower is better v8 6.6 µs v8 — multi-tier JIT 6.6 µs 1.00× the fastest engine here silverfir-nano.jit 6.8 µs silverfir-nano.jit — optimizing JIT 6.8 µs 1.03× the fastest engine here wasmer.cranelift 9.1 µs wasmer.cranelift — optimizing JIT 9.1 µs 1.38× the fastest engine here wasmtime.cranelift 11.5 µs wasmtime.cranelift — optimizing JIT 11.5 µs 1.75× the fastest engine here wasmer.singlepass 18.7 µs wasmer.singlepass — baseline JIT 18.7 µs 2.84× the fastest engine here wasmtime.winch 22.1 µs wasmtime.winch — baseline JIT 22.1 µs 3.36× the fastest engine here

Interpreter

16 engines

0 0.5 1 1.5 2 time in ms — lower is better silverfir-nano.interpreter 46.1 µs silverfir-nano.interpreter — interpreter 46.1 µs 1.00× the fastest engine here wasmi-v2.eager.checked 64.4 µs wasmi-v2.eager.checked — interpreter 64.4 µs 1.40× the fastest engine here stitch 72.3 µs stitch — interpreter 72.3 µs 1.57× the fastest engine here wasm3.eager 75.8 µs wasm3.eager — interpreter 75.8 µs 1.64× the fastest engine here wamr 110.1 µs wamr — interpreter 110.1 µs 2.39× the fastest engine here wasmi-v0.32 162.0 µs wasmi-v0.32 — interpreter 162.0 µs 3.51× the fastest engine here wasmi-v1.eager.checked 177.9 µs wasmi-v1.eager.checked — interpreter 177.9 µs 3.86× the fastest engine here wasmtime.pulley 239.1 µs wasmtime.pulley — interpreter 239.1 µs 5.19× the fastest engine here wasmi-v0.31 277.7 µs wasmi-v0.31 — interpreter 277.7 µs 6.02× the fastest engine here fizzy 354.6 µs fizzy — interpreter 354.6 µs 7.69× the fastest engine here tinywasm 606.4 µs tinywasm — interpreter 606.4 µs 13.2× the fastest engine here spacewasm 697.2 µs spacewasm — interpreter 697.2 µs 15.1× the fastest engine here submilli-wasm 701.5 µs submilli-wasm — interpreter 701.5 µs 15.2× the fastest engine here toywasm 1.40 ms toywasm — interpreter 1.40 ms 30.3× the fastest engine here wasmedge 1.63 ms wasmedge — interpreter 1.63 ms 35.4× the fastest engine here dlr-wasm-interpreter 2.00 ms dlr-wasm-interpreter — interpreter 2.00 ms 43.3× the fastest engine here

execute/word-countinput 152089

JIT

6 engines

0 0.5 1 1.5 time in ms — lower is better v8 423.3 µs v8 — multi-tier JIT 423.3 µs 1.00× the fastest engine here wasmtime.cranelift 451.6 µs wasmtime.cranelift — optimizing JIT 451.6 µs 1.07× the fastest engine here wasmer.cranelift 452.5 µs wasmer.cranelift — optimizing JIT 452.5 µs 1.07× the fastest engine here silverfir-nano.jit 459.2 µs silverfir-nano.jit — optimizing JIT 459.2 µs 1.08× the fastest engine here wasmtime.winch 1.02 ms wasmtime.winch — baseline JIT 1.02 ms 2.42× the fastest engine here wasmer.singlepass 1.05 ms wasmer.singlepass — baseline JIT 1.05 ms 2.48× the fastest engine here

Interpreter

16 engines

0 20 40 60 time in ms — lower is better silverfir-nano.interpreter 3.08 ms silverfir-nano.interpreter — interpreter 3.08 ms 1.00× the fastest engine here wasm3.eager 4.04 ms wasm3.eager — interpreter 4.04 ms 1.31× the fastest engine here wasmi-v1.eager.checked 5.65 ms wasmi-v1.eager.checked — interpreter 5.65 ms 1.84× the fastest engine here wamr 5.68 ms wamr — interpreter 5.68 ms 1.84× the fastest engine here wasmi-v2.eager.checked 5.98 ms wasmi-v2.eager.checked — interpreter 5.98 ms 1.94× the fastest engine here wasmi-v0.32 7.21 ms wasmi-v0.32 — interpreter 7.21 ms 2.34× the fastest engine here wasmtime.pulley 7.70 ms wasmtime.pulley — interpreter 7.70 ms 2.50× the fastest engine here stitch 8.85 ms stitch — interpreter 8.85 ms 2.88× the fastest engine here fizzy 13.65 ms fizzy — interpreter 13.65 ms 4.44× the fastest engine here wasmi-v0.31 13.68 ms wasmi-v0.31 — interpreter 13.68 ms 4.45× the fastest engine here tinywasm 16.32 ms tinywasm — interpreter 16.32 ms 5.30× the fastest engine here spacewasm 26.11 ms spacewasm — interpreter 26.11 ms 8.49× the fastest engine here submilli-wasm 26.83 ms submilli-wasm — interpreter 26.83 ms 8.72× the fastest engine here toywasm 48.07 ms toywasm — interpreter 48.07 ms 15.6× the fastest engine here dlr-wasm-interpreter 51.69 ms dlr-wasm-interpreter — interpreter 51.69 ms 16.8× the fastest engine here wasmedge 53.90 ms wasmedge — interpreter 53.90 ms 17.5× the fastest engine here
Execution benchmarks — full table of measured times
Engineargon2bulk-opscompressioncounter-globalcounter-localcounter-paramfibonacci-iterfibonacci-recfibonacci-tailjson-parsemandelbrotmatrix-mulnbodyprime-sieveregex-reduxreverse-complementsort-dynsortspectralnormtiny-keccakword-count
dlr-wasm-interpreter2.50 s764.0 µs358.13 ms11.05 ms18.77 ms17.87 ms103.18 ms125.73 ms352.11 ms584.76 ms3.70 s737.50 ms1.57 s1.79 ms2.33 ms1.90 s2.56 s1.40 s2.00 ms51.69 ms
fizzy758.14 ms85.27 ms1.99 ms3.77 ms36.91 ms41.66 ms92.30 ms163.86 ms915.94 ms216.78 ms590.42 ms306.1 µs682.2 µs527.26 ms767.29 ms414.63 ms354.6 µs13.65 ms
silverfir-nano.interpreter106.88 ms378.0 µs16.00 ms652.8 µs343.6 µs343.5 µs2.44 ms8.15 ms2.63 ms19.87 ms36.71 ms223.99 ms42.64 ms60.03 ms67.7 µs93.6 µs105.22 ms151.85 ms51.85 ms46.1 µs3.08 ms
silverfir-nano.jit5.13 ms437.5 µs4.56 ms427.8 µs248.8 µs249.1 µs497.1 µs1.82 ms251.7 µs2.69 ms11.67 ms28.92 ms4.84 ms16.39 ms17.9 µs6.9 µs19.92 ms11.43 ms6.03 ms6.8 µs459.2 µs
spacewasm1.44 s163.40 ms5.80 ms8.42 ms48.66 ms55.68 ms167.77 ms321.70 ms2.01 s436.94 ms832.45 ms759.1 µs1.15 ms920.46 ms1.34 s693.71 ms697.2 µs26.11 ms
stitch250.67 ms466.9 µs41.93 ms3.44 ms1.34 ms3.03 ms12.86 ms16.43 ms48.37 ms80.55 ms242.80 ms65.62 ms188.09 ms247.1 µs230.0 µs189.94 ms215.82 ms133.46 ms72.3 µs8.85 ms
submilli-wasm1.38 s610.2 µs171.21 ms7.89 ms6.42 ms6.15 ms46.75 ms92.72 ms30.62 ms180.17 ms278.53 ms2.11 s520.77 ms950.40 ms735.0 µs1.16 ms1.34 s1.73 s742.03 ms701.5 µs26.83 ms
tinywasm754.25 ms571.1 µs110.86 ms4.95 ms3.53 ms2.75 ms12.93 ms30.64 ms9.65 ms102.28 ms178.10 ms1.20 s285.25 ms544.65 ms668.5 µs679.0 µs837.55 ms1.01 s290.43 ms606.4 µs16.32 ms
toywasm2.24 s772.1 µs303.01 ms10.87 ms16.01 ms16.12 ms76.38 ms149.18 ms53.11 ms337.17 ms543.84 ms3.46 s959.56 ms1.41 s1.72 ms2.08 ms2.13 s2.76 s1.27 s1.40 ms48.07 ms
v816.74 ms453.3 µs4.96 ms277.0 µs252.2 µs252.0 µs503.5 µs1.49 ms299.0 µs2.80 ms12.10 ms49.45 ms5.22 ms38.99 ms18.2 µs14.0 µs17.19 ms27.71 ms6.68 ms6.6 µs423.3 µs
wamr207.97 ms484.3 µs36.53 ms1.80 ms1.59 ms2.00 ms5.31 ms22.18 ms21.45 ms60.31 ms110.99 ms306.52 ms99.98 ms161.27 ms159.7 µs171.4 µs254.28 ms256.82 ms85.84 ms110.1 µs5.68 ms
wasm3.eager157.03 ms460.4 µs22.48 ms1.28 ms2.08 ms2.24 ms5.08 ms24.15 ms29.96 ms43.44 ms298.48 ms61.65 ms120.31 ms106.9 µs188.9 µs168.34 ms172.42 ms78.52 ms75.8 µs4.04 ms
wasmedge2.72 s798.3 µs346.36 ms11.16 ms17.94 ms18.67 ms103.83 ms118.85 ms47.30 ms344.57 ms634.31 ms3.90 s841.79 ms2.18 s1.75 ms2.56 ms2.35 s3.17 s1.47 s1.63 ms53.90 ms
wasmer.cranelift20.15 ms446.9 µs4.74 ms451.9 µs248.3 µs247.6 µs497.1 µs2.76 ms3.05 ms11.75 ms30.84 ms5.04 ms16.30 ms18.0 µs16.4 µs17.48 ms18.99 ms5.73 ms9.1 µs452.5 µs
wasmer.singlepass31.26 ms460.8 µs7.25 ms904.4 µs499.5 µs823.0 µs1.00 ms5.48 ms6.00 ms477.15 ms450.95 ms460.03 ms25.00 ms30.5 µs33.9 µs64.20 ms53.06 ms260.19 ms18.7 µs1.05 ms
wasmi-v0.31633.21 ms544.6 µs101.45 ms2.24 ms3.00 ms2.97 ms28.32 ms32.65 ms10.77 ms99.86 ms193.00 ms662.31 ms207.54 ms411.05 ms624.1 µs588.3 µs435.21 ms547.27 ms245.48 ms277.7 µs13.68 ms
wasmi-v0.32280.75 ms452.2 µs37.43 ms1.99 ms1.86 ms2.98 ms5.19 ms28.27 ms9.77 ms45.06 ms121.46 ms396.34 ms117.70 ms156.64 ms397.2 µs280.5 µs314.84 ms372.81 ms136.85 ms162.0 µs7.21 ms
wasmi-v1.eager.checked235.75 ms471.1 µs30.55 ms1.74 ms1.98 ms2.48 ms6.95 ms32.93 ms11.23 ms36.40 ms111.98 ms369.42 ms99.92 ms147.66 ms144.1 µs210.9 µs305.03 ms260.75 ms166.03 ms177.9 µs5.65 ms
wasmi-v2.eager.checked260.54 ms482.4 µs37.62 ms1.04 ms1.78 ms1.25 ms4.13 ms15.12 ms5.40 ms40.51 ms69.29 ms231.29 ms51.92 ms114.90 ms180.3 µs221.9 µs188.31 ms189.67 ms145.00 ms64.4 µs5.98 ms
wasmtime.cranelift19.96 ms457.1 µs4.74 ms447.3 µs248.1 µs248.3 µs496.7 µs2.80 ms650.0 µs2.89 ms12.11 ms31.47 ms5.03 ms16.86 ms29.1 µs16.6 µs19.64 ms17.93 ms5.67 ms11.5 µs451.6 µs
wasmtime.pulley284.16 ms749.9 µs51.70 ms2.00 ms3.45 ms3.45 ms13.43 ms38.53 ms10.81 ms55.22 ms134.23 ms1.06 s207.12 ms176.59 ms235.5 µs422.6 µs503.00 ms325.88 ms325.87 ms239.1 µs7.70 ms
wasmtime.winch43.45 ms463.2 µs6.68 ms524.2 µs768.3 µs1.29 ms2.81 ms8.66 ms7.64 ms33.03 ms51.84 ms15.30 ms25.09 ms35.9 µs38.0 µs60.19 ms52.10 ms24.39 ms22.1 µs1.02 ms

Startup — by engine class

The startup benchmarks time rt.instantiate(&wasm): parsing, validation, compilation, linking and instantiation all count. Silverfir-nano runs with parallel compilation disabled, so these are serial numbers. Interpreters have a structural advantage here — they emit little or no machine code — so each class gets its own chart and its own baseline, as above.

JIT startup speed

Geometric mean over the 6 startup cases every JIT ran

Silverfir-nanov8wasmtime.craneliftOther engines
20× 40× 60× × v8 — lower is better v8 multi-tier JIT 1.00× v8 — multi-tier JIT class leader, fastest on 4 of 6 cases wasmer.singlepass baseline JIT 4.34× wasmer.singlepass — baseline JIT 4.34× the time of v8, geomean over 6 cases fastest on 2 of them wasmtime.winch baseline JIT 7.60× wasmtime.winch — baseline JIT 7.60× the time of v8, geomean over 6 cases fastest on 0 of them silverfir-nano.jit optimizing JIT 31.5× silverfir-nano.jit — optimizing JIT 31.5× the time of v8, geomean over 6 cases fastest on 0 of them wasmtime.cranelift optimizing JIT 45.4× wasmtime.cranelift — optimizing JIT 45.4× the time of v8, geomean over 6 cases fastest on 0 of them wasmer.cranelift optimizing JIT 45.5× wasmer.cranelift — optimizing JIT 45.5× the time of v8, geomean over 6 cases fastest on 0 of them

V8 leads because it compiles lazily, not because it compiles the same functions faster than the others.

Interpreter startup speed

Geometric mean over the 6 startup cases every interpreter ran

Silverfir-nanowasmi-v2.eager.checkedwasm3.eagerOther engines
10× 20× 30× 40× × wasmi-v1.lazy.unchecked — lower is better wasmi-v1.lazy.unchecked 1.00× wasmi-v1.lazy.unchecked — interpreter class leader, fastest on 2 of 6 cases wasm3.lazy 1.00× wasm3.lazy — interpreter 1.00× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 3 of them wasmi-v2.lazy.unchecked 1.08× wasmi-v2.lazy.unchecked — interpreter 1.08× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 1 of them wasmi-v1.lazy.checked 1.09× wasmi-v1.lazy.checked — interpreter 1.09× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v2.lazy.checked 1.40× wasmi-v2.lazy.checked — interpreter 1.40× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v2.lazy-translation.checked 5.84× wasmi-v2.lazy-translation.checked — interpreter 5.84× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them dlr-wasm-interpreter 6.24× dlr-wasm-interpreter — interpreter 6.24× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them stitch 7.07× stitch — interpreter 7.07× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v1.lazy-translation.checked 7.59× wasmi-v1.lazy-translation.checked — interpreter 7.59× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v0.31 7.93× wasmi-v0.31 — interpreter 7.93× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them submilli-wasm 10.1× submilli-wasm — interpreter 10.1× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them toywasm 10.8× toywasm — interpreter 10.8× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v0.32 11.5× wasmi-v0.32 — interpreter 11.5× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them fizzy 11.9× fizzy — interpreter 11.9× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v1.eager.checked 14.0× wasmi-v1.eager.checked — interpreter 14.0× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmi-v2.eager.checked 19.1× wasmi-v2.eager.checked — interpreter 19.1× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them spacewasm 19.8× spacewasm — interpreter 19.8× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them silverfir-nano.interpreter 20.0× silverfir-nano.interpreter — interpreter 20.0× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them tinywasm 20.0× tinywasm — interpreter 20.0× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasm3.eager 25.4× wasm3.eager — interpreter 25.4× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wasmedge 26.5× wasmedge — interpreter 26.5× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them wamr 35.2× wamr — interpreter 35.2× the time of wasmi-v1.lazy.unchecked, geomean over 6 cases fastest on 0 of them

The .lazy* configurations defer function-body translation to first call, so the top of this chart is not doing the same work as the eager engines below it. Off the scale, not charted: wasmtime.pulley (958×). Measured times are in the table below.

Startup benchmarks — full table of measured times
Engineargon2bz2coremarkerc20ffmpegpulldown-cmarkspidermonkey
dlr-wasm-interpreter114.0 µs320.2 µs24.4 µs24.0 µs67.62 ms923.8 µs16.72 ms
fizzy219.0 µs639.3 µs53.1 µs49.2 µs129.47 ms1.45 ms30.20 ms
silverfir-nano.interpreter361.0 µs835.3 µs84.4 µs75.2 µs212.63 ms3.43 ms54.98 ms
silverfir-nano.jit10.75 ms31.07 ms2.95 ms1.63 ms5.97 s72.13 ms1.41 s
spacewasm290.6 µs1.14 ms60.8 µs54.6 µs181.97 ms8.02 ms38.31 ms
stitch145.1 µs344.5 µs31.8 µs30.9 µs70.00 ms853.8 µs16.73 ms
submilli-wasm202.8 µs481.4 µs48.1 µs45.2 µs97.07 ms1.23 ms22.99 ms
tinywasm436.5 µs949.8 µs91.7 µs75.7 µs200.27 ms2.61 ms48.39 ms
toywasm225.4 µs492.3 µs50.0 µs44.1 µs103.64 ms1.38 ms26.51 ms
v8497.0 µs571.7 µs459.5 µs440.9 µs12.80 ms759.3 µs3.85 ms
wamr638.5 µs1.43 ms188.4 µs162.4 µs289.55 ms5.18 ms74.07 ms
wasm3.eager490.2 µs1.51 ms94.6 µs78.1 µs213.74 ms4.42 ms62.28 ms
wasm3.lazy22.1 µs45.9 µs11.9 µs6.7 µs9.37 ms67.9 µs1.06 ms
wasmedge558.4 µs1.23 ms142.3 µs121.0 µs247.60 ms2.77 ms59.01 ms
wasmer.cranelift14.95 ms43.83 ms3.52 ms3.23 ms7.84 s98.78 ms2.03 s
wasmer.singlepass1.38 ms3.41 ms357.8 µs382.6 µs639.66 ms10.10 ms172.47 ms
wasmi-v0.31161.7 µs360.9 µs37.8 µs37.2 µs70.28 ms895.1 µs18.91 ms
wasmi-v0.32220.8 µs520.0 µs48.9 µs46.4 µs109.43 ms1.28 ms39.86 ms
wasmi-v1.eager.checked270.6 µs682.2 µs63.3 µs56.3 µs127.28 ms1.50 ms42.30 ms
wasmi-v1.lazy-translation.checked156.4 µs401.0 µs35.3 µs32.5 µs77.86 ms828.2 µs17.99 ms
wasmi-v1.lazy.checked23.7 µs51.3 µs6.0 µs8.8 µs9.30 ms88.7 µs1.62 ms
wasmi-v1.lazy.unchecked35.7 µs42.4 µs3.8 µs5.5 µs6.40 ms85.0 µs2.08 ms
wasmi-v2.eager.checked455.2 µs923.6 µs86.1 µs74.5 µs179.71 ms2.18 ms46.12 ms
wasmi-v2.lazy-translation.checked122.9 µs294.3 µs26.7 µs24.3 µs57.39 ms672.5 µs14.04 ms
wasmi-v2.lazy.checked39.3 µs50.7 µs7.4 µs12.8 µs12.33 ms113.2 µs1.97 ms
wasmi-v2.lazy.unchecked29.9 µs41.0 µs4.8 µs6.5 µs4.20 ms151.8 µs1.50 ms
wasmtime.cranelift16.33 ms44.59 ms3.46 ms3.09 ms100.02 ms1.89 s
wasmtime.pulley17.58 ms62.86 ms4.05 ms3.70 ms116.32 ms2.26 s
wasmtime.winch2.80 ms3.97 ms763.1 µs917.4 µs1.27 s14.72 ms282.68 ms

How to read this

Every bar is a Criterion point estimate — the linear-regression slope where Criterion could fit one, otherwise the mean. The per-case charts show that estimate directly. The two summary charts cannot: absolute times differ by orders of magnitude between workloads, so each engine is first scored against whichever engine won that case, and those ratios are combined with a geometric mean over the cases every engine completed. Engine classes come from the suite's own README. One property of a single-session laptop run is worth knowing before reading the absolute numbers: the machine drifts over the ~80 minutes the suite takes, and comparing this run against an earlier one shows unchanged third-party engines moving by tens of percent purely with their position in the run. Every comparison ON this page is made inside a single workload, where all engines run back-to-back within about two minutes, and the summary charts normalise each engine against that workload's winner before combining — so the drift cancels where it could change a conclusion. It does not cancel in the printed millisecond values, and it does not cancel across runs: to compare two revisions, use ci/wasmi_performance.py, which measures baseline and candidate on one machine minutes apart with a probability gate, not two pages like this one.

Generated from the raw cargo-criterion JSON stream stored beside this page in data/.