Skip to content

Performance

Native benchmarks (engine v0.1.0) and the playground in two browsers. Cold start is slower than wasmtime.

Native (engine v0.1.0)

Measured on an Apple M4 Max, one core, median of 3. The benchmarks are committed in the engine repository.

BenchmarkWhatResult
pull from a layoutcold pull of the hello image (735 kB tar+gzip layer): verify and store1.26 ms
unpack a gzip layerapply that layer to an empty tree11.5 ms
copy-on-write clonea container’s root plus its first write2.2 µs
cold startfirst container of an image: wazero compiles the module and runs it to exit610 ms
warm startevery later container: compiled module from the per-digest cache3.4 ms

These native numbers were measured without a reference runtime on the machine.

In the browser (the playground)

One run on a CI ubuntu-latest runner, in Chromium and Firefox, with the native wazero and wasmtime 50 on the same runner for comparison:

WhatChromiumFirefoxwazero nativewasmtime 50
page ready0.46 s1.0 s
first run of hello81 ms291 ms825 ms23 ms
next run47 ms231 ms5.4 ms
one WASI call97 µs354 µs

Page ready is slower with the dashboard. On the live site in Chromium the page was ready in 728 ms for the terminal page and 1070 ms for the dashboard (the new default UI). dashboard.wasm was 20.45 MB raw and 5.32 MB gzipped at that time; dashboard v0.4.2 made it smaller (go-widgets toolkit v0.345.1) and no newer figure has been measured.

Cold start in the browser is slower than wasmtime (81 ms against 23 ms in Chromium, 291 ms in Firefox). These are single runs on one CI machine, not medians, so they show orders of magnitude rather than precise ratios.

Created on by tannevaled

Modified on by tannevaled