Benchmarks

Language comparison of cx against C, C++, Rust, Go, Odin, and Zig on the bench corpus, followed by performance history of the compiler and compiled programs, one point per main commit. Hover a history graph for values, click a point to open the commit. Runners are shared GitHub machines, so single points wobble: trends and step changes are the signal. Corpus and method are documented in bench/. The last history graph tracks non-blank lines of tracked files instead of timing anything.

Language comparison

Each chart is one measurement. The ratio on each bar is against the fastest language in that chart.

Unoptimized debug is the development build. cx omits --release, so safety checks stay on and both the LLVM IR pipeline and codegen optimizations are skipped. C and C++ use -O0 -g. Rust uses opt-level 0 with debug assertions, overflow checks, and full debug info. Go disables optimizations and inlining with -gcflags=all=-N -l, including the standard library. Odin uses -debug, which selects -o:none. Zig uses -ODebug; its release build is -OReleaseFast.

Debug compile time is a rebuild of that development build. One untimed compile warms the standard-library cache first. Each sample is a separate copy of the source, so an unchanged-file cache hit is not what gets timed. ccache is disabled.

History

C++ build and test suite (seconds)

Corpus compile time (seconds)

Corpus run time (seconds)

Compiler binary size

Corpus binary sizes

Lines of code