Skip to content

RayoMD 2.6.0 Performance Snapshot

mkuch edited this page Jul 18, 2026 · 3 revisions

RayoMD 2.6.0 performance snapshot

Run date: 2026-07-18.

RayoMD 2.6 reduces optional Windows startup work for one-shot CLI exports. In an order-balanced same-session comparison against the frozen 2.5 release, the 2.6 Release build reduced fresh-process time 35.8% by paired geometric mean across three image-free workloads. Candidate PDFs were byte-identical to the matching 2.5 outputs.

This is a release-to-release startup result on one Windows host. It is not a universal Markdown-to-PDF ranking or a claim of visual or feature equivalence with broader renderers.

Results

Case Input RayoMD 2.5 median RayoMD 2.6 median Paired median improvement Faster pairs
Tiny README 205 B 19.6959 ms 11.8651 ms 39.9% 31/32
Medium feature mix 15,102 B 21.0559 ms 13.7823 ms 36.7% 32/32
500-row table 33,353 B 22.9131 ms 15.3760 ms 33.8% 32/32

The aggregate same-session geometric means were 21.1809 ms for 2.5 and 13.5982 ms for 2.6. The paired-session improvement was 35.7999%.

What changed in 2.6

The Windows executable now loads optional GUI, shell, networking, and image DLLs only when those paths are needed. One-shot native CLI exports can reach the exporter without eagerly loading those libraries first. CLI parsing compatibility, URL-image opt-in, and the normal GUI path remain available.

The candidate executable grew from 2,812,416 to 2,820,608 bytes (8 KiB, about 0.3%). The startup improvement therefore carries a small, explicit binary-size tradeoff rather than a new runtime dependency.

Method

  • Host: Windows 11 build 26200, AMD Ryzen 5 5600X, 128 GiB RAM.
  • Build: MinGW-w64 GCC 15.2.0, CMake Release configuration.
  • Timing: wall time from fresh process launch through output validation and process exit; filesystem and OS caches may be warm.
  • Sampling: 32 order-balanced A/B pairs per case after six uncounted preflights per binary and case.
  • Inputs: pinned local files with no Markdown or HTML image syntax; URL-image fetching disabled.
  • Baseline: rayomd 2.5.0, 2,812,416 bytes, SHA-256 32b001eee4ff70ed5b8767b3652b88cc4c40473c84b085d277461e2a56cade01.
  • Candidate: rayomd 2.6.0, 2,820,608 bytes, SHA-256 289ec3f1baa1d85681add8b48174a5ec3d378fa5dc17c0aa4b66f98659877cb4.

Pinned input hashes:

Case SHA-256
Tiny README 7a2b7143c3a0b584d21c6aa8daa3ab59763482b51978bff677c3b5cccb71f919
Medium feature mix 5f31800448816969a0be9c45f153b4d642b0336fbbdbe98ec0d52a40d9083f4f
500-row table 33240f4ae881a717a6accf5b37f2603b13f2da4c5598ee7269faee7896af1619

Acceptance caveat

The run met the harness's 20% paired improvement target, stayed within its per-case regression limit, and produced byte-identical PDFs. Its frozen 2.5 baseline geometric mean was 14.2% slower than the earlier reference session, exceeding the strict 5% drift limit. The automated acceptance result was therefore false.

That drift does not reverse the order-balanced same-session result, but it does mean the absolute millisecond values should be treated as host-local. The README uses the paired improvement and carries this caveat here; it does not turn the run into a new cross-tool claim.

Reproduce

Build 2.6 in Release mode and run the maintained harness with an extracted 2.5 release binary and the pinned corpus:

cmake -S . -B build\windows -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build build\windows --config Release

python scripts\fresh_process_ab.py `
  --baseline benchmark-output\baselines\rayomd-2.5.0.exe `
  --candidate build\windows\rayomd.exe `
  --corpus benchmark-output\competitors\corpus `
  --root benchmark-output\fresh-process-2.6 `
  --runs 32 `
  --preflights 6 `
  --expected-baseline-sha256 32b001eee4ff70ed5b8767b3652b88cc4c40473c84b085d277461e2a56cade01

Generated JSON records, corpora, PDFs, and binaries belong under ignored benchmark-output/. See Performance Watcher for the broader warm, cold, batch, serve, memory, reversible-PDF, and competitor workflows, and Benchmarks for the dated archive.

Clone this wiki locally