Skip to content

PerfChecker.jlMeasure how Julia code changes

Compare time and allocations across versions, then profile what got slower.

PerfChecker
Primarily maintained byMirage Interactive Open source. Contributions welcome.

What it does ​

  • Runs existing Julia @testitems, or operations you define.

  • Measures in a separate worker process, so the UI is not measured.

  • Saves results as portable run bundles. Every interface reads the same files.

  • Compares releases, Git revisions and Julia runtimes.

  • Profiles CPU, wall time and allocations when a timing changes.

Example

Bibliography export across nine releases

These curves show the time, GC time, allocated bytes and allocation count for exporting the same bibliography. For each metric, the minimum sample at each release is divided by the smallest minimum across the nine releases. Each curve has its own best value at 1. GC is zero throughout this campaign and is shown at 1 as unchanged, by convention.

Each curve has its own reference at 1. Read the statistic, reference, units and unavailable values in the exported plot before comparing curves.

100 samples per version · Windows · Julia 1.13.0 · one worker thread. The dependency versions follow each tag. None of these samples triggered GC. The run collected timings and allocations without a correctness check or CI regression limit.

Where to start ​

Interfaces ​

  • VS Code — run one item while editing.

  • Web interface (Oxygen) — select workloads in a browser.

  • Pluto — editable notebooks with explicit launch controls.

  • REPL — plan and inspect results in Julia.

  • Tachikoma — interactive terminal selection.

  • Makie — figures from saved runs.

  • Documenter — include saved results in documentation.

Examples ​

  • Bibliography — compare nine releases, then investigate export costs.

  • DataStructures — 35 containers over eight years.

  • Oxygen — HTTP handlers and real network traffic.

Contribute ​

Report a problem, improve code, documentation or an example, or open a pull request.

Built with the Julia community

PerfChecker.jl brings together work from many projects. We thank their maintainers, contributors, and the Julia community for making these workflows possible.

Additional foundations

Core's data and source handling also depend on CSV, Hwloc, JSON, JuliaSyntax, TypedTables, and YAML. We also thank the Julia language, compiler, runtime, and standard-library maintainers, including those of Base64, Dates, Downloads, Libdl, Pkg, Profile, Random, SHA, TOML, and UUIDs.

Development-only tests also use Intervals, PatternFolds, and Julia's Test, Logging, and Sockets libraries.

Optional integrations require their packages; hardware and platform support vary. Thank you to everyone who builds, documents, tests, and maintains these tools.

Open source · Report an issue · Contributions welcome