diff --git a/docs/milestones/R1.md b/docs/milestones/R1.md index 5205996..611192d 100644 --- a/docs/milestones/R1.md +++ b/docs/milestones/R1.md @@ -217,6 +217,17 @@ The framework is rebuilt with our SDK settings (ADR 0006), and the rebuilt libra | Host tests and coverage | 49 s | 33 s | | Rebuilding locally with nothing changed | 77 s | 13 s | -The runner's own first run after this change is still a slow one: it has no mark yet, so it rebuilds the framework once more, then keeps it. +### Measured on the runner (pull request #76, 2026-10-07) + +| Run | Tools | Tests and coverage | The firmware | The whole job | +|---|---|---|---|---| +| Before (run 81) | 15 s | 55 s | 358 s | 434 s | +| The first with the new workflow: no mark yet, the framework is rebuilt once more and the caches fill | 16 s | 59 s | 354 s | 431 s | +| The next commit (only the workflow changed) | 10 s | 36 s | **51 s** | **100 s** | +| The same commit again | 10 s | 36 s | **18 s** | **66 s** | + +In the 51-second run, 245 objects came from the cache and 43 were compiled: `version.cpp`, as expected, and all 42 files of `src/`, which had not changed. In the run after it, all 290 came from the cache. So the objects of `src/` made by the run that rebuilt the framework were not reusable by a normal run, and those of a normal run are: the two-pass build that rebuilds the framework compiles `src/` with something different on its command line. It costs one 51-second run after each framework rebuild, which is rare; I did not look for what differs. + +The firmware step with everything cached is 18 seconds: the libraries are downloaded and unpacked (4 s), the dependency scan (5 s), fetching 290 objects, the link and the image (the last 11 s). A pull request that changes a few files should land between that and 51 seconds. **What it costs:** the build cache grows by about 40 MB a run (each linked firmware is kept) and is started again past 3 GB; ccache is held to 1 GB. diff --git a/site/content/dev/milestones/r1.md b/site/content/dev/milestones/r1.md index 8cdacff..9643067 100644 --- a/site/content/dev/milestones/r1.md +++ b/site/content/dev/milestones/r1.md @@ -225,6 +225,17 @@ The framework is rebuilt with our SDK settings (ADR 0006), and the rebuilt libra | Host tests and coverage | 49 s | 33 s | | Rebuilding locally with nothing changed | 77 s | 13 s | -The runner's own first run after this change is still a slow one: it has no mark yet, so it rebuilds the framework once more, then keeps it. +### Measured on the runner (pull request #76, 2026-10-07) + +| Run | Tools | Tests and coverage | The firmware | The whole job | +|---|---|---|---|---| +| Before (run 81) | 15 s | 55 s | 358 s | 434 s | +| The first with the new workflow: no mark yet, the framework is rebuilt once more and the caches fill | 16 s | 59 s | 354 s | 431 s | +| The next commit (only the workflow changed) | 10 s | 36 s | **51 s** | **100 s** | +| The same commit again | 10 s | 36 s | **18 s** | **66 s** | + +In the 51-second run, 245 objects came from the cache and 43 were compiled: `version.cpp`, as expected, and all 42 files of `src/`, which had not changed. In the run after it, all 290 came from the cache. So the objects of `src/` made by the run that rebuilt the framework were not reusable by a normal run, and those of a normal run are: the two-pass build that rebuilds the framework compiles `src/` with something different on its command line. It costs one 51-second run after each framework rebuild, which is rare; I did not look for what differs. + +The firmware step with everything cached is 18 seconds: the libraries are downloaded and unpacked (4 s), the dependency scan (5 s), fetching 290 objects, the link and the image (the last 11 s). A pull request that changes a few files should land between that and 51 seconds. **What it costs:** the build cache grows by about 40 MB a run (each linked firmware is kept) and is started again past 3 GB; ccache is held to 1 GB.