BENCHMARK OBSERVATORY

Numbers without source are not results.

These are median whole-process times in milliseconds. Initialization and output are included. Answers are checked before timings are accepted. Missing runtimes are not estimated.

Snapshot
2026-07-23
Machine
Apple arm64 · macOS 26.6
Runs
7 per command · median
Source state
301bfee · dirty, recorded
01 / RESULTS

Lower is better.

Raw TSV ↗
Runtimedot 2M × 20slerp 2M
lulang AOT64.053 ms12.738 ms
lulang JIT56.535 ms36.039 ms
lulang selfhost13.677 ms12.096 ms
C++ -O327.815 ms14.259 ms
C++ fast11.902 ms12.669 ms
Rust27.089 ms14.583 ms
Julia
NumPy63.199 ms135.866 ms
JavaScript44.622 ms35.352 ms
02 / SOURCE AND ASSUMPTIONS

The comparison is inspectable.

03 / ABLATIONS

Optimizations can be switched off.

The same source can be rerun with individual transformations disabled. Layout is explicit in the report: contiguous vectors for dot, value quaternions for slerp, and SoA for record-array kernels.

Read the experiments ↗
LU_MATH
inline | call
LU_IFCONV
on | off
LU_LICM
on | off
LU_SIMD
on | off
LU_LAYOUT
soa | aos
04 / EMBEDDED PROOF

One function. One C symbol.

The notebook compiles a value-semantic quaternion kernel, loads the generated library with pylulang, checks its result against NumPy, and then measures both implementations.

embedded_slerp.h
/* export fn slerp_checksum(count: i64): f64 */
double slerp_checksum(int64_t count);
lulang
9.593 ms
NumPy
62.425 ms
Measured speedup
6.51×
Method
2M slerps · 5 runs · median · compilation excluded · result checked
05 / REPRODUCE

Run the same measurement.

python3 benchmarks/run_observatory.py --runs 7 --bootstrap

The runner builds the host and three-stage self-hosted compilers, checks numerical answers, records tool versions, and writes the table.