Measure a test
Run an existing TestItem and inspect its time and allocations.
Try the quickstart
Compare time and allocations across versions, then profile what got slower.

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.
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.
Open the same interactive export · Download the serialized plot
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.
New here? Start with your first comparison.
Investigating a change? Follow the Bibliography case study.
Define a larger experiment with suites and CI.
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.
Bibliography — compare nine releases, then investigate export costs.
DataStructures — 35 containers over eight years.
Oxygen — HTTP handlers and real network traffic.
Report a problem, improve code, documentation or an example, or open a pull request.
PerfChecker.jl brings together work from many projects. We thank their maintainers, contributors, and the Julia community for making these workflows possible.
Measure and profile: BenchmarkTools and Chairmarks provide timing and allocation measurements. Julia's Profile and Profile.Allocs provide stack profiles; CoverageTools supports line-level allocation analysis.
Check correctness and investigate: TestItems and TestItemRunner define and run checks; PropCheck and Supposition supply generated cases that PerfChecker freezes into repeatable corpora. Optional analyzers JET, AllocCheck, SnoopCompile, and Aqua examine inference, allocation paths, compilation, and package quality.
Choose an interface: VS Code and the MCP community support editor and agent workflows. Pluto and PlutoUI support reactive notebooks; Oxygen and HTTP support the Web interface. Makie, its CairoMakie and WGLMakie backends, and Bonito support interactive views and graphical exports; UnicodePlots and Tachikoma support terminal views.
Preserve and share evidence: Malt supplies isolated workers, DrWatson supports experiment storage, and FlameGraphs and PProf support profile export.
Configure and qualify: Preferences.jl supports project-local defaults in PerfChecker 1.1.0 and later. PkgEval.jl and the JuliaCI community support package qualification in isolated test environments; PkgEval is not a performance-measurement backend.
Explore optional workloads and counters: LinuxPerf and LIKWID support hardware-counter companions. Julia Threads and Distributed, Dagger, KernelAbstractions, and CUDA support scenarios when supplied by the workload.
Document the results: Documenter, DocumenterVitepress, and VitePress power these guides and API references.
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.