Wasm VS Python benchmarks

Current benchmark data was generated on Tue Apr 01 2025, full log can be found HERE

CONTRIBUTIONS are WELCOME!

[x86_64][4 cores] AMD EPYC 7763 64-Core Processor (Model 1)

* -m in a file name stands for multi-threading or multi-processing

* -i in a file name stands for direct intrinsics usage. (Usage of simd intrinsics via libraries is not counted)

* -ffi in a file name stands for non-stdlib FFI usage

* (You may find time < time(user) + time(sys) for some non-parallelized programs, the overhead is from GC or JIT compiler, which are allowed to take advantage of multi-cores as that's more close to real-world scenarios.)

binarytrees

Input: 18

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 1182ms 8.2ms 96.2MB 1120ms 47ms pypy 3.10.16
wasm 5.rs 1809ms 60ms 33.1MB 1790ms 7ms wasmtime 31.0.0
wasm 3.rs 1854ms 16ms 49.2MB 1827ms 17ms wasmtime 31.0.0
wasm 4.rs 1863ms 11ms 33.2MB 1840ms 10ms wasmtime 31.0.0
python 1.py timeout 0.0ms 40.8MB 4963ms 23ms cpython 3.13.2
python 1.py timeout 0.0ms 40.5MB 4737ms 247ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 95ms 3.4ms 68.6MB 67ms 17ms pypy 3.10.16
wasm 5.rs 174ms 4.1ms 19.3MB 157ms 0ms wasmtime 31.0.0
wasm 3.rs 180ms 2.4ms 21.1MB 163ms 0ms wasmtime 31.0.0
wasm 4.rs 181ms 4.0ms 19.2MB 163ms 0ms wasmtime 31.0.0
python 1.py 478ms 2.9ms 11.9MB 453ms 10ms pyston 3.8.12
python 1.py 732ms 24ms 12.6MB 720ms 0ms cpython 3.13.2

coro-prime-sieve

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 1133ms 6.8ms 19.4MB 1117ms 0ms wasmtime 31.0.0
python 1.py 1208ms 9.0ms 106.4MB 1153ms 37ms pypy 3.10.16
python 1.py 2704ms 11ms 25.0MB 2677ms 10ms cpython 3.13.2
python 1.py timeout 0.0ms 17.4MB 4980ms 7ms pyston 3.8.12

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 3.rs 82ms 1.6ms 17.7MB 70ms 0ms wasmtime 31.0.0
python 1.py 220ms 3.2ms 86.7MB 180ms 23ms pypy 3.10.16
python 1.py 239ms 7.5ms 20.4MB 220ms 3ms cpython 3.13.2
python 1.py 657ms 16ms 16.8MB 637ms 3ms pyston 3.8.12

edigits

Input: 250001

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 249ms 2.1ms 83.6MB 213ms 23ms pypy 3.10.16
python 1.py 363ms 3.9ms 12.5MB 347ms 0ms cpython 3.13.2
wasm 1.rs 421ms 7.8ms 18.6MB 403ms 3ms wasmtime 31.0.0
python 1.py 2004ms 2.5ms 9.6MB 1993ms 0ms pyston 3.8.12

Input: 100000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 103ms 2.3ms 63.4MB 73ms 17ms pypy 3.10.16
wasm 1.rs 115ms 2.6ms 18.0MB 103ms 0ms wasmtime 31.0.0
python 1.py 116ms 4.8ms 12.3MB 100ms 0ms cpython 3.13.2
python 1.py 350ms 2.4ms 8.8MB 337ms 0ms pyston 3.8.12

fannkuch-redux

Input: 11

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 4154ms 12ms 16.7MB 4137ms 0ms wasmtime 31.0.0

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 353ms 4.0ms 17.2MB 340ms 0ms wasmtime 31.0.0

fasta

Input: 2500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 237ms 2.6ms 17.5MB 223ms 3ms wasmtime 31.0.0
python 1.py 1868ms 39ms 88.8MB 1827ms 30ms pypy 3.10.16
python 5-m.py 2268ms 8.6ms 65.4MB 3480ms 850ms pypy 3.10.16
python 5-m.py 2448ms 28ms 12.5MB 3507ms 1017ms pyston 3.8.12
python 1.py 3055ms 111ms 8.1MB 3037ms 0ms pyston 3.8.12
python 5-m.py 3389ms 42ms 13.6MB 4500ms 943ms cpython 3.13.2
python 1.py 4744ms 95ms 8.6MB 4730ms 0ms cpython 3.13.2

Input: 250000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 32ms 0.9ms 17.3MB 20ms 0ms wasmtime 31.0.0
python 1.py 256ms 2.4ms 63.3MB 230ms 10ms pypy 3.10.16
python 5-m.py 311ms 0.4ms 12.5MB 400ms 143ms pyston 3.8.12
python 1.py 329ms 29ms 8.1MB 317ms 0ms pyston 3.8.12
python 5-m.py 410ms 2.7ms 13.6MB 490ms 157ms cpython 3.13.2
python 5-m.py 442ms 1.0ms 65.3MB 737ms 313ms pypy 3.10.16
python 1.py 487ms 1.7ms 8.8MB 477ms 0ms cpython 3.13.2

helloworld

Input: QwQ

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 7.3ms 1.3ms 17.4MB 0ms 0ms wasmtime 31.0.0
python 1.py 12ms 1.2ms 7.6MB 0ms 0ms pyston 3.8.12
python 1.py 14ms 0.7ms 8.6MB 10ms 0ms cpython 3.13.2
python 1.py 28ms 0.6ms 51.6MB 10ms 10ms pypy 3.10.16

lru

Input: 1000 1000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 90ms 0.5ms 17.4MB 80ms 0ms wasmtime 31.0.0
python 2.py 148ms 3.4ms 58.2MB 127ms 10ms pypy 3.10.16
python 1.py 180ms 3.2ms 59.4MB 157ms 10ms pypy 3.10.16
python 1.py 716ms 1.5ms 8.9MB 700ms 0ms pyston 3.8.12
python 2.py 872ms 24ms 8.5MB 857ms 0ms pyston 3.8.12
python 1.py 1138ms 18ms 9.3MB 1123ms 0ms cpython 3.13.2
python 2.py 1300ms 16ms 9.0MB 1290ms 0ms cpython 3.13.2

Input: 1000 3000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 255ms 5.4ms 16.9MB 240ms 0ms wasmtime 31.0.0
python 2.py 338ms 1.1ms 59.2MB 317ms 10ms pypy 3.10.16
python 1.py 378ms 4.7ms 60.3MB 353ms 10ms pypy 3.10.16
python 1.py 2142ms 16ms 8.9MB 2130ms 0ms pyston 3.8.12
python 2.py 2475ms 28ms 8.5MB 2467ms 0ms pyston 3.8.12
python 1.py 3392ms 6.8ms 9.3MB 3377ms 0ms cpython 3.13.2
python 2.py 3900ms 85ms 9.0MB 3883ms 0ms cpython 3.13.2

Input: 100 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 48ms 1.5ms 17.4MB 37ms 0ms wasmtime 31.0.0
python 2.py 105ms 2.3ms 58.1MB 80ms 13ms pypy 3.10.16
python 1.py 120ms 1.9ms 58.7MB 97ms 10ms pypy 3.10.16
python 1.py 348ms 3.1ms 8.5MB 337ms 0ms pyston 3.8.12
python 2.py 399ms 6.2ms 8.1MB 390ms 0ms pyston 3.8.12
python 1.py 539ms 1.1ms 9.1MB 530ms 0ms cpython 3.13.2
python 2.py 631ms 13ms 8.6MB 623ms 0ms cpython 3.13.2

mandelbrot

Input: 5000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 832ms 8.8ms 20.3MB 817ms 0ms wasmtime 31.0.0

Input: 1000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 8.rs 43ms 1.1ms 17.4MB 30ms 0ms wasmtime 31.0.0

merkletrees

Input: 17

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 939ms 69ms 41.1MB 913ms 13ms wasmtime 31.0.0
python 1.py 2230ms 7.0ms 202.6MB 2107ms 110ms pypy 3.10.16
python 1.py timeout 0.0ms 93.9MB 4953ms 33ms cpython 3.13.2
python 1.py timeout 0.0ms 130.4MB 4930ms 53ms pyston 3.8.12

Input: 15

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 201ms 2.9ms 23.2MB 183ms 0ms wasmtime 31.0.0
python 1.py 386ms 6.3ms 105.1MB 327ms 50ms pypy 3.10.16
python 1.py 3162ms 61ms 37.1MB 3137ms 13ms cpython 3.13.2
python 1.py timeout 0.0ms 48.9MB 4953ms 33ms pyston 3.8.12

nbody

Input: 5000000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 413ms 2.3ms 17.1MB 400ms 0ms wasmtime 31.0.0
wasm 2.rs 587ms 3.1ms 17.0MB 573ms 0ms wasmtime 31.0.0
python 2.py 1356ms 8.7ms 60.2MB 1330ms 10ms pypy 3.10.16
python 1.py 2651ms 14ms 57.2MB 2627ms 10ms pypy 3.10.16
python 1.py timeout 0.0ms 8.6MB 4990ms 0ms cpython 3.13.2
python 2.py timeout 0.0ms 8.8MB 4990ms 0ms cpython 3.13.2
python 1.py timeout 0.0ms 8.3MB 4990ms 0ms pyston 3.8.12
python 2.py timeout 0.0ms 8.1MB 4990ms 0ms pyston 3.8.12

Input: 500000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 50ms 1.6ms 17.1MB 37ms 0ms wasmtime 31.0.0
wasm 2.rs 67ms 0.7ms 17.4MB 53ms 0ms wasmtime 31.0.0
python 2.py 180ms 1.9ms 57.9MB 160ms 10ms pypy 3.10.16
python 1.py 308ms 8.8ms 57.1MB 287ms 10ms pypy 3.10.16
python 1.py 936ms 17ms 8.3MB 923ms 0ms pyston 3.8.12
python 2.py 1303ms 12ms 8.1MB 1290ms 0ms pyston 3.8.12
python 1.py 3020ms 81ms 8.8MB 3010ms 0ms cpython 3.13.2
python 2.py 3178ms 29ms 8.8MB 3167ms 0ms cpython 3.13.2

nsieve

Input: 12

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 376ms 5.1ms 22.0MB 360ms 0ms wasmtime 31.0.0
wasm 1.rs 510ms 12ms 56.1MB 493ms 0ms wasmtime 31.0.0
python 1.py 2573ms 30ms 369.5MB 2500ms 57ms pypy 3.10.16
python 2.py 3155ms 131ms 633.0MB 2947ms 190ms pyston 3.8.12
python 1.py 4850ms 37ms 320.4MB 4793ms 43ms pyston 3.8.12
python 1.py timeout 0.0ms 321.1MB 4960ms 23ms cpython 3.13.2
python 2.py timeout 0.0ms 633.6MB 4827ms 160ms cpython 3.13.2
python 2.py timeout 0.0ms 959.8MB 4713ms 270ms pypy 3.10.16

Input: 10

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 1.rs 99ms 4.3ms 27.0MB 83ms 0ms wasmtime 31.0.0
wasm 2.rs 100ms 2.4ms 18.4MB 83ms 7ms wasmtime 31.0.0
python 1.py 537ms 3.8ms 135.0MB 503ms 20ms pypy 3.10.16
python 2.py 728ms 7.7ms 164.2MB 687ms 27ms pyston 3.8.12
python 1.py 1111ms 15ms 86.1MB 1090ms 10ms pyston 3.8.12
python 2.py 1421ms 10ms 164.8MB 1380ms 27ms cpython 3.13.2
python 2.py 1556ms 33ms 290.2MB 1470ms 70ms pypy 3.10.16
python 1.py 2684ms 11ms 86.8MB 2660ms 10ms cpython 3.13.2

pidigits

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 1905ms 5.3ms 8.9MB 1863ms 27ms pyston 3.8.12
python 4.py 1947ms 8.4ms 9.3MB 1893ms 40ms cpython 3.13.2
python 4.py 2190ms 5.4ms 89.4MB 2147ms 30ms pypy 3.10.16
wasm 2.rs 2211ms 7.5ms 18.2MB 2197ms 0ms wasmtime 31.0.0

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 4.py 459ms 3.9ms 8.6MB 443ms 0ms pyston 3.8.12
python 4.py 463ms 0.2ms 9.0MB 450ms 0ms cpython 3.13.2
wasm 2.rs 531ms 6.4ms 17.6MB 513ms 0ms wasmtime 31.0.0
python 4.py 551ms 3.0ms 84.1MB 513ms 27ms pypy 3.10.16

secp256k1

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 3195ms 7.0ms 8.4MB 3183ms 0ms pyston 3.8.12
python 1.py 3526ms 20ms 74.3MB 3490ms 20ms pypy 3.10.16
wasm 1.rs 3610ms 3.0ms 16.9MB 3597ms 0ms wasmtime 31.0.0
python 1.py 3855ms 52ms 8.6MB 3847ms 0ms cpython 3.13.2

Input: 500

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
python 1.py 811ms 4.7ms 8.3MB 800ms 0ms pyston 3.8.12
wasm 1.rs 910ms 1.5ms 16.8MB 897ms 0ms wasmtime 31.0.0
python 1.py 972ms 5.1ms 8.6MB 960ms 0ms cpython 3.13.2
python 1.py 994ms 11ms 67.3MB 963ms 17ms pypy 3.10.16

spectral-norm

Input: 8000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 3602ms 4.5ms 16.9MB 3587ms 0ms wasmtime 31.0.0
wasm 7.rs 4912ms 16ms 16.9MB 4897ms 0ms wasmtime 31.0.0
python 8.py timeout 0.0ms 14.6MB 30ms 10ms cpython 3.13.2
python 8.py timeout 0.0ms 96.1MB 793ms 83ms pypy 3.10.16
python 8.py timeout 0.0ms 14.2MB 40ms 7ms pyston 3.8.12

Input: 4000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 910ms 0.9ms 16.7MB 897ms 0ms wasmtime 31.0.0
wasm 7.rs 1240ms 9.5ms 16.9MB 1230ms 0ms wasmtime 31.0.0
python 8.py timeout 0.0ms 14.4MB 47ms 10ms cpython 3.13.2
python 8.py timeout 0.0ms 96.8MB 1297ms 187ms pypy 3.10.16
python 8.py timeout 0.0ms 13.7MB 57ms 17ms pyston 3.8.12

Input: 2000

lang code time stddev peak-mem mem time(user) time(sys) compiler compiler/runtime
wasm 2.rs 235ms 1.1ms 17.2MB 220ms 0ms wasmtime 31.0.0
wasm 7.rs 321ms 11ms 16.8MB 307ms 0ms wasmtime 31.0.0
python 8-m.py 1947ms 12ms 93.2MB 6353ms 250ms pypy 3.10.16
python 8.py timeout 0.0ms 14.0MB 80ms 23ms cpython 3.13.2
python 8.py timeout 0.0ms 13.4MB 143ms 33ms pyston 3.8.12