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:
| Measurement | Parent | Streaming |
|---|---|---|
| Median elapsed time | 7.6 µs | 6.8 µs |
| Median allocated bytes | 3,904 B | 2,976 B |
| Median allocation count | 27 | 23 |
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:
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 runCPU profile
Open the same interactive export
Download the serialized plotRevision 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 plotThis 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.
