Skip to content

Comparison configuration ​

Options for adding releases, Git revisions and comparison policies to a suite.

Candidates ​

julia
candidates = [
    SuiteCandidate("before", "6a4cc9027dcc094d21b3681ccff86ca4aec84a23"),
    SuiteCandidate("after", "575ec810042cc791fd47a2c025a80246ccf039b5"),
    SuiteCandidate("tagged-0.4.0", "v0.4.0"),
]

package = PackageSuite("Bibliography"; source, worker_environment,
    versions = [v"0.3.0", v"0.4.0"], candidates, features)

Use a full Git revision when a branch can move. compatibility_version selects a feature variant; it does not change the candidate's source identity.

References ​

Exact policy — one reference:

julia
ComparisonPolicy("before-vs-0.4";
    package = "Bibliography", comparison_key = "bibliography-export/v1",
    baselines = ["0.4.0"], candidates = ["before"])

Grouped policy — summarize several references first:

julia
ComparisonPolicy("experiments-vs-recent";
    package = "Bibliography", comparison_key = "bibliography-export/v1",
    baselines = ["0.3.0", "0.4.0"], candidates = ["before", "after"],
    aggregation = :median)

Aggregations: :median (default), :mean, :minimum, :maximum.

VS Code target picker ​

The visual suite editor scans the package repository into branches, tags and recent commits. The free-form field also parses:

  • plain refs such as feature/faster-parser;

  • refs/heads/... and refs/tags/...;

  • GitHub/GitLab tree, tag and commit URLs;

  • owner/repository@ref;

  • full commit hashes.

Saved selections go to perf/perfchecker-ui.json, which the CLI reads with --config.

CLI targets ​

sh
julia --startup-file=no --project=. -e 'using PerfChecker; exit(perfchecker_main(ARGS))' -- plan \
  --suite=perf/suite.jl --profile=ci \
  --candidate='{"package":"Bibliography","label":"after","revision":"575ec81"}'

For larger configurations, prefer the shared UI JSON file over shell-escaped JSON.

Comparability ​

  • Compare only when measurement definitions and comparison_key agree.

  • Use a new key when inputs, output semantics, warm-up or procedure change.

  • Hardware, runtime and source identity stay in the bundle so a confounded comparison is detectable.

  • A missing result stays missing or unavailable; it never becomes an improvement.

Recorded examples ​

Change in median export time for eight Bibliography tags against tag 0.1.0
The reference is 0.1.0. Negative means less time, positive means more. This recorded comparison has no acceptance budget; the bars are not pass or fail labels.

Open source · Report an issue · Contributions welcome