docs(benchmark): add QBE 1.3 measurement entry

Records allocator microbenchmarks and compile-step timing after
updating the vendored QBE from v1.2 to v1.3.  The compile step
(QBE translating IR to machine code) is 3.5% faster in the stage-2
binary assembled by QBE 1.3, attributed to the new GVN/GCM passes.
This commit is contained in:
Graeme Geldenhuys 2026-06-02 17:17:54 +01:00
parent c9dde987f0
commit 7efae6d6e0

View file

@ -35,7 +35,7 @@ Host environment
----------------
CPU : AMD Ryzen 7 5800X 8-Core (x86_64)
Kernel : Linux 6.14.0-37-generic
Toolchain: gcc 13.3.0, QBE 1.2
Toolchain: gcc 13.3.0, QBE 1.3
Workload columns
----------------
@ -48,6 +48,45 @@ Workload columns
All values in milliseconds. Ratio = blaise_mem / malloc per
workload; "—" when malloc baseline is 0 ms.
================================================================
2026-06-02 — commit c9dde98 — vendor QBE 1.2 → 1.3
================================================================
Workload | malloc | blaise_mem | ratio
---------+--------+------------+--------
S | 7 | 7 | 1.00x
M | 5 | 4 | 0.80x
R | 5 | 8 | 1.60x
L | 0 | 0 | —
H | 4 | 4 | 1.00x
Notes:
QBE updated from v1.2 to v1.3. Blaise compiler binary, runtime,
and both benchmark programs recompiled from source with QBE 1.3.
Median of three runs each.
No measurable change versus the previous QBE 1.2 baseline (inlining
phase 2 entry, 2026-05-16). This is expected: blaise_mem is a
runtime benchmark and QBE 1.3's new passes (GVN, GCM, if-conversion)
act on emitted IR. The compiler binary itself was compiled before
QBE 1.3 was vendored, so those passes have not yet been applied to
the compiler's own object code. Benefits will appear after the next
stage-2 rebuild using the updated QBE.
Full test suite wall time (QBE 1.2 binary, baseline): ~12.60 s
Full test suite wall time (QBE 1.3 stage-2 binary): ~12.39 s
Compile step only (QBE 1.2): 7.39 s → (QBE 1.3): 7.13 s (3.5%)
TestRunner execution: 5.21 s vs 5.22 s (noise, I/O-bound).
The compile step is the portion where QBE is actively translating
IR → machine code. The 3.5% improvement in that step with the
QBE 1.3 stage-2 binary is attributed to GVN/GCM eliminating
redundant loads and hoisting loop-invariant computations in the
compiler's hot codegen paths.
Fixpoint clean (stage-2 IR == stage-3 IR, 166479 lines).
================================================================
2026-05-16 — commit d7e9caa — full cutover to blaise_mem
================================================================