Skip to content

Dot performance dashboard

Warm, in-process timing of graphviz-ts vs the native dot oracle over the dot test corpus. Peer to PARITY.md — PARITY tracks correctness, PERF tracks speed. A report, not a gate. The fidelity target is ≤3× native.

Regenerate: npm run build:js && node test/corpus/bench.mjs && node test/corpus/perf-dashboard.mjs.

Method

  • Port: the shipped bundle (dist/index.js) loaded once in a pool of resident, JIT-primed worker threads; pure renderSvg() is timed (best-of-N), so the measured region excludes all process/transpile/module-load startup — the warm steady state a long-lived consumer sees. Light graphs run at full pool; heavy graphs (native > 2s) are timed serially by default — measured cross-talk inflates a concurrent big render's single sample materially (≈66% on 2620). Set BENCH_HEAVY_POOL>1 for a faster, noisier scan.
  • Native: dot -Tsvg best-of-3 (min).
  • Budget: target ≤3× native. Per-render cap 817795ms (SIGKILL → over-cap, i.e. a true synchronous hang).
  • Caveat: light graphs are timed under up-to-6-way load; for a precise single number re-run BENCH_POOL=1 BENCH_IDS=<id> node test/corpus/bench.mjs.

Summary

  • Rated inputs: 778 · within ≤3× native: 762 (97.9%)
  • ok (≤3×): 762 · slow (>3×): 16 · over-cap (hang): 1 · errored: 0 · oracle-error: 11
  • ratio (port/native): p50 0.01× · p90 0.17× · max 6.18×

Ratio distribution

bandcount
≤1× (port ≥ native, warm)737
1–2×15
2–3×10
3–4×15
4–6×0
6–10×1
>10×0
over-cap (≥817795ms, possible hang)1

Over budget — slower than 3× native (worst first)

idnative msport ms (warm)ratio
210812849793706.18×
graphs-b1048635333953.87×
graphs-b1008646312283.61×
27432017043.5×
nshare-root_circo2478653.5×
2646974633374973.46×
graphs-b103121041093.4×
linux.x86-root_twopi2488343.36×
graphs-root2147123.33×
2095_122309731283.28×
linux.x86-root_circo2457983.26×
262037111533.11×
nshare-root_twopi2477683.11×
graphs-badvoro3209913.1×
20952617943.04×
graphs-b2958517733.03×

Over-cap / possible hang

idnative mscap msnative×budgetstatus
2854163559817795490677exceeds budget (likely hang/runaway)

Raise BENCH_CAP_MS and re-run these ids to resolve an inconclusive status.