Repository navigation
Commit 03bc3ca
committed
Time a chain of modules with the base's and the head's build systems
Why:
A change to the build's scheduling, such as starting a module once the
interfaces it reads are final, does the same work sooner. Counting
allocated words and instructions can only show what such a change
costs, never what it saves.
`time <base checkout> <head checkout> <out.json>` builds a generated
project of 150 modules in a chain, each using the one before it, and a
module beside each, clean with the two build systems in turn on the
default number of worker domains: one build each that isn't counted,
then 10 rounds, the order alternating each round. `compare --timings`
adds a section to the report with the base's and the head's median times
and the median of the head's time over the base's in the same round, with
a 95% confidence interval from a percentile bootstrap of the rounds with a
fixed seed. The section never counts as a regression or an improvement;
when the times' file is missing or can't be read, it says they weren't
measured. In CI, the step runs after both measurements, each build may
take 2 minutes and the whole command 10, and a failure only leaves the
times out.
Locally, with load around 5 to 9 on 8 cores, the ratio was 0.695 (0.646
to 0.825) for the pull request that starts dependents once a module's
interface is final, 0.991 (0.948 to 1.055) for one that only changes
namespaced packages, and 0.965 (0.921 to 1.078) with the same build
system on both sides. The command took about 45 seconds.
Signed-off-by: Jono Prest <jjprest@gmail.com>1 parent a146443 commit 03bc3ca
4 files changed
Lines changed: 472 additions & 9 deletions
File tree
- .github/workflows
- changes
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
467 | 467 | | |
468 | 468 | | |
469 | 469 | | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
470 | 477 | | |
471 | 478 | | |
472 | 479 | | |
473 | | - | |
| 480 | + | |
474 | 481 | | |
475 | 482 | | |
476 | 483 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
0 commit comments