Benchmarks The Benchmarks Game programs in Vyrn, C, Rust and JavaScript, run on one machine.
AMD Ryzen 5 9600X 6-Core Processor, Windows 11 10.0.26200, vyrn 0.1.0-indev, wasmtime 49.0.3, 2026-10-17 · p50 and p99 of 100 runs
Results by program A lane is one engine's build, then its run at p50, with the hatch reaching p99; light grey is startup. A row is a deviation when Vyrn native is more than ten per cent off Rust, the noise of this machine.
nbody spectral-norm fannkuch-redux binary-trees fasta reverse-complement k-nucleotide pidigits mandelbrot regex-redux
N = 25,000,000 882 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 882 ms Vyrn wasm 12511 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 880 ms Vyrn wasm 12680 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 998 ms Vyrn wasm 1202 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 998 ms Vyrn wasm 1201 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 1007 ms Vyrn wasm 1226 ms Vyrn wasm-opt 985 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 974 ms Vyrn wasm 1059 ms Vyrn wasm-opt 933 ms 974 ms 1.53x Rust · a deviation build startup run at p50 to p99 peak mem
Rust build time 213 ms peak 171.8 MB run startup 3.9 ms p50 637 ms p99 645 ms p99/p50 1.01x peak 4.2 MB cpu 0.64 s size source gz 1.8 KB output 142.5 KB total time 849 ms vs fastest 1.00x
Rust run 637 ms 849 ms 4.2 MB build time 213 ms peak 171.8 MB run startup 3.9 ms p50 637 ms p99 645 ms p99/p50 1.01x peak 4.2 MB cpu 0.64 s size source gz 1.8 KB output 142.5 KB total time 849 ms vs fastest 1.00x C run 847 ms 989 ms 3.8 MB build time 142 ms peak 83.1 MB run startup 3.5 ms p50 847 ms p99 916 ms p99/p50 1.08x peak 3.8 MB cpu 0.84 s size source gz 2.0 KB output 144.5 KB total time 989 ms vs fastest 1.16x Vyrn wasm-opt run 933 ms 1003 ms 13.8 MB build time 70.1 ms peak 79.8 MB run startup 11.8 ms p50 933 ms p99 954 ms p99/p50 1.02x peak 13.8 MB cpu 0.94 s size source gz 1.5 KB output 5.0 KB total time 1003 ms vs fastest 1.18x node run 1030 ms 1030 ms 40.2 MB build time none peak none run startup 28.9 ms p50 1030 ms p99 1113 ms p99/p50 1.08x peak 40.2 MB cpu 1.03 s size source gz 2.2 KB output 5.7 KB, the source total time 1030 ms vs fastest 1.21x Vyrn wasm run 1059 ms 1091 ms 13.8 MB build time 32.7 ms peak 75.9 MB run startup 11.5 ms p50 1059 ms p99 1082 ms p99/p50 1.02x peak 13.8 MB cpu 1.06 s size source gz 1.5 KB output 8.8 KB total time 1091 ms vs fastest 1.29x Vyrn native run 974 ms 1395 ms 4.1 MB build time 421 ms peak 163.1 MB run startup 4.0 ms p50 974 ms p99 1000 ms p99/p50 1.03x peak 4.1 MB cpu 0.97 s size source gz 1.5 KB output 216.0 KB total time 1395 ms vs fastest 1.64x bun run 1455 ms 1455 ms 23.9 MB build time none peak none run startup 11.3 ms p50 1455 ms p99 1527 ms p99/p50 1.05x peak 23.9 MB cpu 1.45 s size source gz 2.2 KB output 5.7 KB, the source total time 1455 ms vs fastest 1.71x no vector instructions — Rust's compiler pairs the inner loop's multiplies into vector instructions, and Vyrn's does not: 103 paired multiplies against 5.
N = 5,500 1012 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 1012 ms Vyrn wasm 3006 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 985 ms Vyrn wasm 2983 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 926 ms Vyrn wasm 2692 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 927 ms Vyrn wasm 2693 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 931 ms Vyrn wasm 2707 ms Vyrn wasm-opt 958 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 924 ms Vyrn wasm 2693 ms Vyrn wasm-opt 949 ms 924 ms 0.99x Rust · inside the noise band build startup run at p50 to p99 peak mem
Vyrn wasm-opt build time 68.0 ms peak 80.9 MB run startup 11.8 ms p50 949 ms p99 982 ms p99/p50 1.03x peak 14.1 MB cpu 0.95 s size source gz 0.7 KB output 3.9 KB total time 1017 ms vs fastest 1.00x
Vyrn wasm-opt run 949 ms 1017 ms 14.1 MB build time 68.0 ms peak 80.9 MB run startup 11.8 ms p50 949 ms p99 982 ms p99/p50 1.03x peak 14.1 MB cpu 0.95 s size source gz 0.7 KB output 3.9 KB total time 1017 ms vs fastest 1.00x C run 928 ms 1059 ms 3.7 MB build time 131 ms peak 79.2 MB run startup 3.5 ms p50 928 ms p99 980 ms p99/p50 1.06x peak 3.7 MB cpu 0.92 s size source gz 1.1 KB output 145.5 KB total time 1059 ms vs fastest 1.04x Rust run 932 ms 1125 ms 4.2 MB build time 193 ms peak 173.3 MB run startup 3.9 ms p50 932 ms p99 951 ms p99/p50 1.02x peak 4.2 MB cpu 0.92 s size source gz 1.0 KB output 138.0 KB total time 1125 ms vs fastest 1.11x node run 1263 ms 1263 ms 40.7 MB build time none peak none run startup 28.9 ms p50 1263 ms p99 1531 ms p99/p50 1.21x peak 40.7 MB cpu 1.27 s size source gz 1.3 KB output 3.2 KB, the source total time 1263 ms vs fastest 1.24x bun run 1300 ms 1300 ms 25.0 MB build time none peak none run startup 11.3 ms p50 1300 ms p99 1404 ms p99/p50 1.08x peak 25.0 MB cpu 1.30 s size source gz 1.3 KB output 3.2 KB, the source total time 1300 ms vs fastest 1.28x Vyrn native run 924 ms 1327 ms 4.3 MB build time 403 ms peak 162.2 MB run startup 4.0 ms p50 924 ms p99 959 ms p99/p50 1.04x peak 4.3 MB cpu 0.92 s size source gz 0.7 KB output 213.5 KB total time 1327 ms vs fastest 1.30x Vyrn wasm run 2693 ms 2726 ms 14.1 MB build time 33.4 ms peak 75.8 MB run startup 11.5 ms p50 2693 ms p99 2749 ms p99/p50 1.02x peak 14.1 MB cpu 2.69 s size source gz 0.7 KB output 6.5 KB total time 2726 ms vs fastest 2.68x N = 11 1958 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 1958 ms Vyrn wasm 4467 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 1985 ms Vyrn wasm 4334 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 2028 ms Vyrn wasm 2129 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 2021 ms Vyrn wasm 2057 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 2035 ms Vyrn wasm 2070 ms Vyrn wasm-opt 1961 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 1991 ms Vyrn wasm 2139 ms Vyrn wasm-opt 2002 ms 1991 ms 1.08x Rust · at the edge of the band build startup run at p50 to p99 peak mem
C build time 137 ms peak 79.2 MB run startup 3.5 ms p50 1842 ms p99 1859 ms p99/p50 1.01x peak 3.8 MB cpu 1.83 s size source gz 1.3 KB output 144.0 KB total time 1979 ms vs fastest 1.00x
C run 1842 ms 1979 ms 3.8 MB build time 137 ms peak 79.2 MB run startup 3.5 ms p50 1842 ms p99 1859 ms p99/p50 1.01x peak 3.8 MB cpu 1.83 s size source gz 1.3 KB output 144.0 KB total time 1979 ms vs fastest 1.00x Rust run 1839 ms 2053 ms 4.2 MB build time 214 ms peak 177.8 MB run startup 3.9 ms p50 1839 ms p99 1919 ms p99/p50 1.04x peak 4.2 MB cpu 1.83 s size source gz 1.2 KB output 138.5 KB total time 2053 ms vs fastest 1.04x Vyrn wasm-opt run 2002 ms 2080 ms 13.8 MB build time 77.6 ms peak 79.5 MB run startup 11.8 ms p50 2002 ms p99 2064 ms p99/p50 1.03x peak 13.8 MB cpu 2.00 s size source gz 0.8 KB output 4.0 KB total time 2080 ms vs fastest 1.05x Vyrn wasm run 2139 ms 2179 ms 13.9 MB build time 40.7 ms peak 75.4 MB run startup 11.5 ms p50 2139 ms p99 2247 ms p99/p50 1.05x peak 13.9 MB cpu 2.14 s size source gz 0.8 KB output 6.7 KB total time 2179 ms vs fastest 1.10x Vyrn native run 1991 ms 2406 ms 4.1 MB build time 415 ms peak 162.2 MB run startup 4.0 ms p50 1991 ms p99 2031 ms p99/p50 1.02x peak 4.1 MB cpu 1.98 s size source gz 0.8 KB output 213.5 KB total time 2406 ms vs fastest 1.22x node run 2569 ms 2569 ms 43.3 MB build time none peak none run startup 28.9 ms p50 2569 ms p99 2665 ms p99/p50 1.04x peak 43.3 MB cpu 2.61 s size source gz 1.4 KB output 3.5 KB, the source total time 2569 ms vs fastest 1.30x bun run 2608 ms 2608 ms 36.7 MB build time none peak none run startup 11.3 ms p50 2608 ms p99 2696 ms p99/p50 1.03x peak 36.7 MB cpu 2.80 s size source gz 1.4 KB output 3.5 KB, the source total time 2608 ms vs fastest 1.32x nothing allocated in the loop — The loop allocates nothing and checks no index. Where the remaining 152 ms against Rust goes is not yet measured.
N = 18 2004 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 2004 ms Vyrn wasm 933 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 1945 ms Vyrn wasm 901 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 456 ms Vyrn wasm 551 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 455 ms Vyrn wasm 550 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 459 ms Vyrn wasm 555 ms Vyrn wasm-opt 559 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 462 ms Vyrn wasm 544 ms Vyrn wasm-opt 555 ms 462 ms 0.29x Rust · ahead of the band build startup run at p50 to p99 peak mem
bun build time none peak none run startup 11.3 ms p50 338 ms p99 365 ms p99/p50 1.08x peak 122.1 MB cpu 0.52 s size source gz 1.2 KB output 2.9 KB, the source total time 338 ms vs fastest 1.00x
bun run 338 ms 338 ms 122.1 MB build time none peak none run startup 11.3 ms p50 338 ms p99 365 ms p99/p50 1.08x peak 122.1 MB cpu 0.52 s size source gz 1.2 KB output 2.9 KB, the source total time 338 ms vs fastest 1.00x node run 386 ms 386 ms 332.5 MB build time none peak none run startup 28.9 ms p50 386 ms p99 429 ms p99/p50 1.11x peak 332.5 MB cpu 0.42 s size source gz 1.2 KB output 2.9 KB, the source total time 386 ms vs fastest 1.14x Vyrn wasm run 544 ms 576 ms 45.9 MB build time 31.4 ms peak 75.3 MB run startup 11.5 ms p50 544 ms p99 636 ms p99/p50 1.17x peak 45.9 MB cpu 0.55 s size source gz 0.7 KB output 6.1 KB total time 576 ms vs fastest 1.70x Vyrn wasm-opt run 555 ms 619 ms 45.9 MB build time 64.3 ms peak 79.5 MB run startup 11.8 ms p50 555 ms p99 612 ms p99/p50 1.10x peak 45.9 MB cpu 0.55 s size source gz 0.7 KB output 3.8 KB total time 619 ms vs fastest 1.83x Vyrn native run 462 ms 870 ms 36.2 MB build time 409 ms peak 161.9 MB run startup 4.0 ms p50 462 ms p99 612 ms p99/p50 1.33x peak 36.2 MB cpu 0.45 s size source gz 0.7 KB output 213.5 KB total time 870 ms vs fastest 2.58x C run 790 ms 910 ms 19.6 MB build time 119 ms peak 79.2 MB run startup 3.5 ms p50 790 ms p99 824 ms p99/p50 1.04x peak 19.6 MB cpu 0.78 s size source gz 1.2 KB output 144.0 KB total time 910 ms vs fastest 2.69x Rust run 1597 ms 1768 ms 36.3 MB build time 171 ms peak 176.5 MB run startup 3.9 ms p50 1597 ms p99 1779 ms p99/p50 1.11x peak 36.3 MB cpu 1.59 s size source gz 1.0 KB output 138.0 KB total time 1768 ms vs fastest 5.23x who allocates the memory — Both Vyrn builds reuse freed nodes from a free list of their size; the C and Rust entries call the system allocator for every node.
N = 5,000,000 977 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 977 ms Vyrn wasm 1137 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 968 ms Vyrn wasm 1104 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 555 ms Vyrn wasm 752 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 555 ms Vyrn wasm 751 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 558 ms Vyrn wasm 753 ms Vyrn wasm-opt 727 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 526 ms Vyrn wasm 727 ms Vyrn wasm-opt 668 ms 526 ms 1.15x Rust · a deviation build startup run at p50 to p99 peak mem
C build time 133 ms peak 79.2 MB run startup 3.5 ms p50 492 ms p99 528 ms p99/p50 1.07x peak 3.8 MB cpu 0.48 s size source gz 1.6 KB output 115.0 KB total time 625 ms vs fastest 1.00x
C run 492 ms 625 ms 3.8 MB build time 133 ms peak 79.2 MB run startup 3.5 ms p50 492 ms p99 528 ms p99/p50 1.07x peak 3.8 MB cpu 0.48 s size source gz 1.6 KB output 115.0 KB total time 625 ms vs fastest 1.00x Rust run 459 ms 687 ms 4.2 MB build time 228 ms peak 171.4 MB run startup 3.9 ms p50 459 ms p99 484 ms p99/p50 1.06x peak 4.2 MB cpu 0.45 s size source gz 1.7 KB output 143.5 KB total time 687 ms vs fastest 1.10x Vyrn wasm-opt run 668 ms 728 ms 13.9 MB build time 59.7 ms peak 79.7 MB run startup 11.8 ms p50 668 ms p99 686 ms p99/p50 1.03x peak 13.9 MB cpu 0.67 s size source gz 1.1 KB output 3.7 KB total time 728 ms vs fastest 1.16x Vyrn wasm run 727 ms 759 ms 13.9 MB build time 32.9 ms peak 76.5 MB run startup 11.5 ms p50 727 ms p99 765 ms p99/p50 1.05x peak 13.9 MB cpu 0.72 s size source gz 1.1 KB output 5.5 KB total time 759 ms vs fastest 1.22x node run 801 ms 801 ms 120.7 MB build time none peak none run startup 28.9 ms p50 801 ms p99 816 ms p99/p50 1.02x peak 120.7 MB cpu 0.81 s size source gz 1.8 KB output 4.4 KB, the source total time 801 ms vs fastest 1.28x Vyrn native run 526 ms 913 ms 4.1 MB build time 388 ms peak 163.1 MB run startup 4.0 ms p50 526 ms p99 533 ms p99/p50 1.01x peak 4.1 MB cpu 0.53 s size source gz 1.1 KB output 212.5 KB total time 913 ms vs fastest 1.46x bun run 1062 ms 1062 ms 435.3 MB build time none peak none run startup 11.3 ms p50 1062 ms p99 1234 ms p99/p50 1.16x peak 435.3 MB cpu 3.52 s size source gz 1.8 KB output 4.4 KB, the source total time 1062 ms vs fastest 1.70x a seed kept in memory — The random seed lives in a module global, so every byte drawn reads and writes memory where Rust keeps the seed in a register.
N = 4,000,000 561 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 561 ms Vyrn wasm 1102 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 536 ms Vyrn wasm 1082 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 232 ms Vyrn wasm 528 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 234 ms Vyrn wasm 526 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 232 ms Vyrn wasm 523 ms Vyrn wasm-opt 521 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 103 ms Vyrn wasm 258 ms Vyrn wasm-opt 273 ms 103 ms 1.50x Rust · a deviation build startup run at p50 to p99 peak mem
Vyrn wasm build time 31.1 ms peak 75.7 MB run startup 11.5 ms p50 258 ms p99 280 ms p99/p50 1.09x peak 94.8 MB cpu 0.25 s size source gz 0.7 KB output 6.3 KB total time 289 ms vs fastest 1.00x
Vyrn wasm run 258 ms 289 ms 94.8 MB build time 31.1 ms peak 75.7 MB run startup 11.5 ms p50 258 ms p99 280 ms p99/p50 1.09x peak 94.8 MB cpu 0.25 s size source gz 0.7 KB output 6.3 KB total time 289 ms vs fastest 1.00x Rust run 69.0 ms 293 ms 43.8 MB build time 224 ms peak 179.3 MB run startup 3.9 ms p50 69.0 ms p99 74.0 ms p99/p50 1.07x peak 43.8 MB cpu 0.06 s size source gz 1.1 KB output 141.0 KB total time 293 ms vs fastest 1.01x C run 176 ms 304 ms 42.5 MB build time 128 ms peak 79.2 MB run startup 3.5 ms p50 176 ms p99 181 ms p99/p50 1.03x peak 42.5 MB cpu 0.17 s size source gz 1.5 KB output 118.0 KB total time 304 ms vs fastest 1.05x Vyrn wasm-opt run 273 ms 350 ms 94.8 MB build time 77.0 ms peak 79.7 MB run startup 11.8 ms p50 273 ms p99 284 ms p99/p50 1.04x peak 94.8 MB cpu 0.27 s size source gz 0.7 KB output 3.9 KB total time 350 ms vs fastest 1.21x node run 419 ms 419 ms 242.9 MB build time none peak none run startup 28.9 ms p50 419 ms p99 444 ms p99/p50 1.06x peak 242.9 MB cpu 0.48 s size source gz 1.3 KB output 3.0 KB, the source total time 419 ms vs fastest 1.45x bun run 494 ms 494 ms 831.0 MB build time none peak none run startup 11.3 ms p50 494 ms p99 572 ms p99/p50 1.16x peak 831.0 MB cpu 1.49 s size source gz 1.3 KB output 3.0 KB, the source total time 494 ms vs fastest 1.71x Vyrn native run 103 ms 504 ms 84.9 MB build time 401 ms peak 163.0 MB run startup 4.0 ms p50 103 ms p99 106 ms p99/p50 1.02x peak 84.9 MB cpu 0.09 s size source gz 0.7 KB output 213.5 KB total time 504 ms vs fastest 1.75x a capacity check per byte — Every byte goes in through an append that checks capacity, where Rust writes it into place. C is 2.6 times Rust here.
N = 400,000 125 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 125 ms Vyrn wasm 300 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 124 ms Vyrn wasm 289 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 121 ms Vyrn wasm 271 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 109 ms Vyrn wasm 252 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 109 ms Vyrn wasm 253 ms Vyrn wasm-opt 245 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 102 ms Vyrn wasm 245 ms Vyrn wasm-opt 238 ms 102 ms 0.52x Rust · ahead of the band build startup run at p50 to p99 peak mem
Vyrn wasm build time 40.2 ms peak 79.0 MB run startup 11.5 ms p50 245 ms p99 256 ms p99/p50 1.05x peak 31.1 MB cpu 0.25 s size source gz 1.4 KB output 13.4 KB total time 285 ms vs fastest 1.00x
Vyrn wasm run 245 ms 285 ms 31.1 MB build time 40.2 ms peak 79.0 MB run startup 11.5 ms p50 245 ms p99 256 ms p99/p50 1.05x peak 31.1 MB cpu 0.25 s size source gz 1.4 KB output 13.4 KB total time 285 ms vs fastest 1.00x Vyrn wasm-opt run 238 ms 346 ms 31.1 MB build time 108 ms peak 84.5 MB run startup 11.8 ms p50 238 ms p99 298 ms p99/p50 1.25x peak 31.1 MB cpu 0.23 s size source gz 1.4 KB output 7.9 KB total time 346 ms vs fastest 1.21x C run 302 ms 451 ms 262.3 MB build time 148 ms peak 79.2 MB run startup 3.5 ms p50 302 ms p99 352 ms p99/p50 1.16x peak 262.3 MB cpu 0.30 s size source gz 2.6 KB output 150.0 KB total time 451 ms vs fastest 1.58x Rust run 195 ms 490 ms 16.8 MB build time 295 ms peak 183.4 MB run startup 3.9 ms p50 195 ms p99 229 ms p99/p50 1.17x peak 16.8 MB cpu 0.19 s size source gz 1.5 KB output 157.0 KB total time 490 ms vs fastest 1.72x bun run 596 ms 596 ms 126.5 MB build time none peak none run startup 11.3 ms p50 596 ms p99 699 ms p99/p50 1.17x peak 126.5 MB cpu 0.64 s size source gz 1.7 KB output 3.9 KB, the source total time 596 ms vs fastest 2.09x Vyrn native run 102 ms 630 ms 21.2 MB build time 528 ms peak 166.0 MB run startup 4.0 ms p50 102 ms p99 106 ms p99/p50 1.04x peak 21.2 MB cpu 0.09 s size source gz 1.4 KB output 225.5 KB total time 630 ms vs fastest 2.21x node run 720 ms 720 ms 117.1 MB build time none peak none run startup 28.9 ms p50 720 ms p99 756 ms p99/p50 1.05x peak 117.1 MB cpu 0.73 s size source gz 1.7 KB output 3.9 KB, the source total time 720 ms vs fastest 2.52x faster than C, and why — Maps carry a hash index, and the key is one number rolled along the sequence, not a fresh piece of text per position.
N = 12,000 1330 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 1330 ms Vyrn wasm 2020 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 1322 ms Vyrn wasm 2016 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 1269 ms Vyrn wasm 1830 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 1334 ms Vyrn wasm 1894 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 1280 ms Vyrn wasm 1822 ms Vyrn wasm-opt 1847 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 1267 ms Vyrn wasm 1822 ms Vyrn wasm-opt 1923 ms 1267 ms 1.01x Rust · inside the noise band build startup run at p50 to p99 peak mem
C build time 127 ms peak 79.2 MB run startup 3.5 ms p50 1266 ms p99 1281 ms p99/p50 1.01x peak 3.8 MB cpu 1.27 s size source gz 1.3 KB output 144.5 KB total time 1394 ms vs fastest 1.00x
C run 1266 ms 1394 ms 3.8 MB build time 127 ms peak 79.2 MB run startup 3.5 ms p50 1266 ms p99 1281 ms p99/p50 1.01x peak 3.8 MB cpu 1.27 s size source gz 1.3 KB output 144.5 KB total time 1394 ms vs fastest 1.00x Rust run 1258 ms 1512 ms 4.3 MB build time 254 ms peak 177.8 MB run startup 3.9 ms p50 1258 ms p99 1299 ms p99/p50 1.03x peak 4.3 MB cpu 1.25 s size source gz 1.3 KB output 142.5 KB total time 1512 ms vs fastest 1.08x Vyrn native run 1267 ms 1688 ms 5.1 MB build time 421 ms peak 162.2 MB run startup 4.0 ms p50 1267 ms p99 1313 ms p99/p50 1.04x peak 5.1 MB cpu 1.27 s size source gz 0.6 KB output 215.0 KB total time 1688 ms vs fastest 1.21x Vyrn wasm run 1822 ms 1858 ms 14.8 MB build time 35.8 ms peak 75.3 MB run startup 11.5 ms p50 1822 ms p99 1863 ms p99/p50 1.02x peak 14.8 MB cpu 1.81 s size source gz 0.6 KB output 6.5 KB total time 1858 ms vs fastest 1.33x Vyrn wasm-opt run 1923 ms 1998 ms 14.8 MB build time 74.6 ms peak 79.8 MB run startup 11.8 ms p50 1923 ms p99 1931 ms p99/p50 1.00x peak 14.8 MB cpu 1.92 s size source gz 0.6 KB output 4.1 KB total time 1998 ms vs fastest 1.43x bun run 2942 ms 2942 ms 26.5 MB build time none peak none run startup 11.3 ms p50 2942 ms p99 2997 ms p99/p50 1.02x peak 26.5 MB cpu 2.95 s size source gz 1.6 KB output 3.7 KB, the source total time 2942 ms vs fastest 2.11x node run 3021 ms 3021 ms 41.4 MB build time none peak none run startup 28.9 ms p50 3021 ms p99 3105 ms p99/p50 1.03x peak 41.4 MB cpu 3.03 s size source gz 1.6 KB output 3.7 KB, the source total time 3021 ms vs fastest 2.17x N = 4,000 675 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 675 ms Vyrn wasm 744 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 675 ms Vyrn wasm 738 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 671 ms Vyrn wasm 739 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 678 ms Vyrn wasm 752 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 647 ms Vyrn wasm 724 ms Vyrn wasm-opt 798 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 652 ms Vyrn wasm 719 ms Vyrn wasm-opt 799 ms 652 ms 1.03x Rust · inside the noise band build startup run at p50 to p99 peak mem
node build time none peak none run startup 28.9 ms p50 652 ms p99 669 ms p99/p50 1.03x peak 43.5 MB cpu 0.66 s size source gz 0.9 KB output 2.1 KB, the source total time 652 ms vs fastest 1.00x
node run 652 ms 652 ms 43.5 MB build time none peak none run startup 28.9 ms p50 652 ms p99 669 ms p99/p50 1.03x peak 43.5 MB cpu 0.66 s size source gz 0.9 KB output 2.1 KB, the source total time 652 ms vs fastest 1.00x bun run 680 ms 680 ms 29.3 MB build time none peak none run startup 11.3 ms p50 680 ms p99 719 ms p99/p50 1.06x peak 29.3 MB cpu 0.67 s size source gz 0.9 KB output 2.1 KB, the source total time 680 ms vs fastest 1.04x C run 617 ms 740 ms 3.8 MB build time 123 ms peak 83.2 MB run startup 3.5 ms p50 617 ms p99 622 ms p99/p50 1.01x peak 3.8 MB cpu 0.61 s size source gz 1.2 KB output 144.5 KB total time 740 ms vs fastest 1.14x Vyrn wasm run 719 ms 751 ms 13.9 MB build time 31.5 ms peak 75.5 MB run startup 11.5 ms p50 719 ms p99 748 ms p99/p50 1.04x peak 13.9 MB cpu 0.72 s size source gz 0.5 KB output 5.7 KB total time 751 ms vs fastest 1.15x Rust run 634 ms 801 ms 4.2 MB build time 167 ms peak 177.4 MB run startup 3.9 ms p50 634 ms p99 661 ms p99/p50 1.04x peak 4.2 MB cpu 0.63 s size source gz 1.0 KB output 136.5 KB total time 801 ms vs fastest 1.23x Vyrn wasm-opt run 799 ms 862 ms 13.8 MB build time 63.0 ms peak 79.1 MB run startup 11.8 ms p50 799 ms p99 822 ms p99/p50 1.03x peak 13.8 MB cpu 0.80 s size source gz 0.5 KB output 3.4 KB total time 862 ms vs fastest 1.32x Vyrn native run 652 ms 1031 ms 4.1 MB build time 379 ms peak 162.8 MB run startup 4.0 ms p50 652 ms p99 672 ms p99/p50 1.03x peak 4.1 MB cpu 0.66 s size source gz 0.5 KB output 212.5 KB total time 1031 ms vs fastest 1.58x the closest six readings here — Plain floating-point arithmetic with no allocation, so six of the seven readings sit within 17% of C.
N = 100,000 1177 ms 2026-09-01 built at vyrn ff1d3fcd4 p50 Vyrn native 1177 ms Vyrn wasm 965 ms Vyrn wasm-opt — 2026-09-01-run2 built at vyrn ff1d3fcd4 p50 Vyrn native 1152 ms Vyrn wasm 939 ms Vyrn wasm-opt — 2026-10-16 built at vyrn fac31e178 p50 Vyrn native 83.1 ms Vyrn wasm 121 ms Vyrn wasm-opt — 2026-10-16-run2 built at vyrn d4a71f800 p50 Vyrn native 88.0 ms Vyrn wasm 130 ms Vyrn wasm-opt — 2026-10-16-run3 built at vyrn b449d70fb p50 Vyrn native 80.8 ms Vyrn wasm 119 ms Vyrn wasm-opt 121 ms 2026-10-17 built at vyrn 7942f7575 p50 Vyrn native 81.1 ms Vyrn wasm 106 ms Vyrn wasm-opt 115 ms 81.1 ms 1.17x Rust · a deviation build startup run at p50 to p99 peak mem
bun build time none peak none run startup 11.3 ms p50 27.1 ms p99 32.7 ms p99/p50 1.21x peak 30.0 MB cpu 0.03 s size source gz 1.0 KB output 2.1 KB, the source total time 27.1 ms vs fastest 1.00x
bun run 27.1 ms 27.1 ms 30.0 MB build time none peak none run startup 11.3 ms p50 27.1 ms p99 32.7 ms p99/p50 1.21x peak 30.0 MB cpu 0.03 s size source gz 1.0 KB output 2.1 KB, the source total time 27.1 ms vs fastest 1.00x node run 61.5 ms 61.5 ms 57.6 MB build time none peak none run startup 28.9 ms p50 61.5 ms p99 78.4 ms p99/p50 1.27x peak 57.6 MB cpu 0.06 s size source gz 1.0 KB output 2.1 KB, the source total time 61.5 ms vs fastest 2.27x C run 73.4 ms 209 ms 10.2 MB build time 136 ms peak 79.2 MB run startup 3.5 ms p50 73.4 ms p99 81.7 ms p99/p50 1.11x peak 10.2 MB cpu 0.08 s size source gz 2.7 KB output 149.5 KB total time 209 ms vs fastest 7.73x Vyrn wasm run 106 ms 241 ms 29.9 MB build time 135 ms peak 82.0 MB run startup 11.5 ms p50 106 ms p99 127 ms p99/p50 1.20x peak 29.9 MB cpu 0.11 s size source gz 0.7 KB output 24.8 KB total time 241 ms vs fastest 8.91x Rust run 69.5 ms 282 ms 10.6 MB build time 213 ms peak 178.0 MB run startup 3.9 ms p50 69.5 ms p99 91.2 ms p99/p50 1.31x peak 10.6 MB cpu 0.06 s size source gz 2.3 KB output 144.5 KB total time 282 ms vs fastest 10.44x Vyrn wasm-opt run 115 ms 322 ms 29.8 MB build time 207 ms peak 87.1 MB run startup 11.8 ms p50 115 ms p99 128 ms p99/p50 1.11x peak 29.8 MB cpu 0.11 s size source gz 0.7 KB output 16.0 KB total time 322 ms vs fastest 11.90x Vyrn native run 81.1 ms 826 ms 19.9 MB build time 745 ms peak 165.7 MB run startup 4.0 ms p50 81.1 ms p99 86.7 ms p99/p50 1.07x peak 19.9 MB cpu 0.08 s size source gz 0.7 KB output 244.5 KB total time 826 ms vs fastest 30.52x not the same engine on both sides — Vyrn runs a general regular-expression engine written in Vyrn; the C and Rust entries carry a sixty-line matcher fitted to this corpus.
Method Plain C11, safe standard-library Rust, plain JavaScript under node and bun. No hand-written vector code and no threads. Vyrn wasm-opt is the WebAssembly build after wasm-opt -O3; plain Vyrn wasm is the module as the compiler writes it. All seven print the same bytes. 100 runs per engine at its own defaults; p50 and p99 by nearest rank. Build time and build peak memory are medians of three builds. Output is the shipped file: the executable, the .wasm module, or the source for node and bun. The harness runs by hand, not in CI. The record is bench/results/2026-10-17.json ; the line beside a program's name is Vyrn's time across all records.