Benchmark Results
Docker-verified cross-language performance comparison
2026-03-11 · AMD Ryzen 9 5900X (24 logical cores) · Docker container (vibelang-third-party-bench:latest)
Geomean Ratios
VibeLang / Other — lower is better for VibeLang
vs C
0.89x
VibeLang 1.1x faster
3 shared benchmarks
vs Zig
0.82x
VibeLang 1.2x faster
12 shared benchmarks
vs Rust
0.93x
VibeLang 1.1x faster
16 shared benchmarks
vs C++
1.74x
VibeLang 1.7x slower
4 shared benchmarks
vs Python
0.05x
VibeLang 20.6x faster
3 shared benchmarks
vs TypeScript
0.12x
VibeLang 8.6x faster
12 shared benchmarks
vs PHP
0.04x
VibeLang 25.0x faster
3 shared benchmarks
vs Elixir
0.03x
VibeLang 37.0x faster
5 shared benchmarks
Runtime Results
Median execution time in milliseconds (lower is better)
| Problem | VibeLang | C | C++ | Rust | Zig | Python | TS | PHP |
|---|---|---|---|---|---|---|---|---|
| binarytrees | 13.9 | — | — | 86.1 | 106 | — | 177 | 495 |
| coro-prime-sieve | 3.3 | — | — | 50.3 | — | 89.7 | 146 | — |
| edigits | 875 | — | — | 39.4 | 270 | — | — | — |
| fannkuch-redux | 333 | — | 20.3 | 19.9 | 104 | — | — | — |
| fasta | 29.8 | — | — | 15.3 | 8.7 | — | 198 | — |
| helloworld | 1.7 | 1.1 | 1.0 | 1.2 | 2.0 | 27.4 | 33.6 | 16.9 |
| http-server | 36.5 | — | — | 193 | — | — | 328 | — |
| json-serde | 3.3 | — | — | 56.2 | — | — | 141 | — |
| lru | 3.8 | — | — | 20.0 | 11.3 | — | 127 | — |
| mandelbrot | 59.1 | — | — | 11.7 | 9.4 | — | — | — |
| merkletrees | 14.5 | — | — | 107 | 123 | — | 144 | 619 |
| nbody | 37.2 | 24.2 | 15.0 | 18.5 | 21.3 | — | 69.5 | — |
| nsieve | 1.7 | 55.0 | 60.9 | 60.0 | 54.4 | 32.9 | — | — |
| pidigits | 202 | — | — | 227 | 401 | — | 1018 | — |
| regex-redux | 4592 | — | — | 43.9 | — | — | — | — |
| secp256k1 | 90.9 | — | — | 142 | — | — | 437 | — |
| spectral-norm | 565 | 38.3 | 70.9 | 63.3 | 162 | — | 216 | — |
Cyan = VibeLang is faster. Orange = VibeLang is 3x+ slower. — = no adapter available for that language/problem.
VibeLang vs Rust
Head-to-head across 16 shared benchmarks — VibeLang wins 9, Rust wins 7
VibeLang Wins (9)
nsievejson-serdecoro-prime-sievemerkletreesbinarytreeslruhttp-serversecp256k1pidigitsRust Wins (7)
helloworldfastanbodymandelbrotfannkuch-reduxedigitsregex-reduxregex-redux: VibeLang uses POSIX regex.h; Rust uses its optimized regex crate. edigits: Custom O(n²) bigint vs Rust's ibig. fannkuch-redux: No auto-vectorization yet. mandelbrot: Scalar-only, no SIMD.
Compile Time
Cold build of helloworld (includes toolchain startup)
VibeLang compiles 1.5x faster than Rust and 2.0x faster than Zig.
Benchmark Suite
18 programs from the PLB-CI (Programming Language Benchmarks) suite
helloworldProcess launch and I/O
binarytreesGC-managed binary tree construction and traversal
merkletreesHash-based tree construction with SHA-256
nbodyN-body gravitational simulation (float-heavy)
spectral-normEigenvalue approximation via power iteration
mandelbrotMandelbrot set computation (complex arithmetic)
fannkuch-reduxPancake sorting permutation benchmark
fastaDNA sequence generation with weighted random
nsieveSieve of Eratosthenes for prime counting
edigitsCompute digits of e using arbitrary-precision arithmetic
pidigitsCompute digits of pi using spigot algorithm
lruLeast-recently-used cache with eviction
knucleotideNucleotide frequency counting
regex-reduxDNA sequence pattern matching and replacement
json-serdeJSON parse, transform, and serialize
http-serverHTTP request/response handling
secp256k1Elliptic curve cryptography operations
coro-prime-sieveConcurrent prime sieve using coroutines
Methodology
How these benchmarks are run
Environment
- cpu
- AMD Ryzen 9 5900X (24 logical cores)
- memory
- 32 GB DDR4
- os
- Ubuntu 24.04 (WSL2)
- kernel
- Linux 6.6.87.2-microsoft-standard-WSL2
- runner
- Docker container (vibelang-third-party-bench:latest)
- tool
- PLB-CI BenchTool + Hyperfine
- binary
- vibe 1.1.0 (release, bench-runtime, GMP-enabled)
- date
- 2026-03-11
Process
- All languages compiled inside a single Docker container with identical toolchains
- PLB-CI BenchTool orchestrates build, test, and bench phases
- Every adapter's output is verified against PLB-CI canonical expected values
- Runtime measured with Hyperfine (multiple runs, warmup rounds)
- Geomean computed only across shared benchmarks where both languages have valid results
- Results exclude Go, Kotlin, and Swift due to build output path mismatches
Known Limitations
Transparency about what these numbers don't show
C/C++ coverage is limited
Only 3-5 shared benchmarks. The C geomean is dominated by nsieve where VibeLang is 22.9x faster. More shared benchmarks are needed for a representative ratio.
Go, Kotlin, Swift are excluded
Build output path mismatches in the PLB-CI BenchTool prevented these languages from producing valid binaries. This is a tooling issue, not a language limitation.
regex-redux is an outlier
VibeLang uses POSIX regex.h (4.6s) while Rust uses its highly optimized regex crate (44ms). This is a library gap, not a compiler performance issue.
edigits uses custom bigint
VibeLang's O(n²) schoolbook multiplication loses to Rust's ibig and Python's GMP. GMP support is implemented but may not have linked correctly in this Docker run.
No multi-threading
VibeLang benchmarks are single-threaded. Languages with parallel implementations (Rust rayon, Go goroutines) would show larger advantages on multi-core workloads.
Python results are sparse
Many Python benchmarks use C extensions (NumPy, BLAS) that make pure-language comparison misleading. Only 3 benchmarks with valid pure-Python results are included.
All benchmark source code, adapters, and raw results are open source.