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. Each metric is divided by its lowest value across the nine releases, so their changes fit on one plot.

Bibliography metrics overlaid across versions, each normalized by its minimum.

Each curve has its own minimum at 1. A value of 1.5 means 50% more than that minimum. The minima can belong to different versions. Equal zeros are displayed at 1 by convention; a nonzero value divided by zero has no finite ratio and is left unplotted. Inspect the raw values before interpreting GC.

Download the plotted values · Open the full-size plot
Read the absolute measurements separately
Median export time across nine Bibliography tags, from 13.15 to 15.45 microseconds.GC time is zero in every one of the 900 recorded export samples.Julia allocated bytes per export across nine tags, from 4480 to 8352 bytes.Allocation counts across nine tags: 94, 101, 91, 60, 71, 71, 74, 74 and 73.

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

Examples

Contribute

Report a problem, improve a page, or open a pull request.

Open source · Report an issue · Contributions welcome