Skip to content

Investigate a change ​

A lower cost suggests where to investigate. Compare one source change with fixed dependencies, then profile the operation to locate work.

Controlled comparison ​

This separate fixture differs from the first chapter’s one-entry release comparison. The saved BibTeX study compares parent 6a4cc90 with streaming-export commit 575ec81, holding BibInternal and BibParser fixed. It records 100 BenchmarkTools samples per revision:

MeasurementParentStreaming
Median elapsed time7.6 µs6.8 µs
Median allocated bytes3,904 B2,976 B
Median allocation count2723

The recorded verdict is inconclusive: timing ranges overlap, and correctness was not checked. The JSON contains summaries, not individual samples. Download the comparison summary (JSON)

From the Bibliography example source, reproduce this study:

sh
cd examples/bibliography
julia --startup-file=no setup.jl core
julia --startup-file=no --project=.controller/core compare-exports.jl plan
julia --startup-file=no --project=.controller/core compare-exports.jl run

CPU profile ​

Open the same interactive export

Download the serialized plot

Revision 575ec81 · Windows · Julia 1.13.0 · 159 CPU samples. Inspect _write_bibtex at bibtex.jl:162: 100 samples (62.9%), including 90 in print at strings/io.jl:48. Inclusive stack weights overlap; do not add them. Without a parent profile, these stacks do not explain the measured difference. Capture details.

Allocation profile ​

Open the same interactive export

Download the serialized plot

This separate warmed capture uses fresh inputs at 575ec81: Linux, Julia 1.13.1, one worker thread. The pie scales sampled site weights to the independently measured 2,976 B / 23-allocation total; sampled weights are not that total. Capacity reservation at bibtex.jl:143 accounts for 41.9% of estimated bytes, writing at line 162 for 27.5%. Without a parent profile, neither attributes a reduction; correctness was not checked. Full capture details retain the sampled-event counts and weights.

Check the change ​

Keep the input, procedure and dependency versions fixed; rerun correctness checks and compatible measurements after editing. Use explicit acceptance limits when gating CI. A missing result remains missing. Comparison configuration covers candidate revisions, grouped references and limits; collector reference covers profile settings. Continue with suites and CI.

Configuration reference

Define candidates in Julia

VS Code target picker

Command-line targets

Comparability rules

Open source · Report an issue · Contributions welcome