Skip to content

Commit ec77b28

Browse files
committed
Add a benchmark update policy.
1 parent 8f35244 commit ec77b28

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

collector/benchmarks/README.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,51 @@ Rust code being written today.
246246
- Compare the benchmarking time of the two versions.
247247
- When adding the new version, for `perf-config.json` and the `N-*.patch`
248248
files, use the corresponding files for the old version as a starting point.
249+
250+
# Benchmark update policy
251+
252+
rustc-perf is a "living benchmark suite" that is regularly changed. Some
253+
benchmarks in rustc-perf are verbatim copies of third-party crates. We
254+
periodically do a mass update of these benchmarks.
255+
256+
Benefits of this approach:
257+
- We ensure we are measuring compilation of the crates most people are using.
258+
This is most relevant for popular crates.
259+
- We get coverage of newer language features.
260+
261+
Costs of this approach:
262+
- It takes time and effort.
263+
- We lose some data continuity.
264+
- But the stable set of benchmarks used for the dashboard are not affected,
265+
and they provide the greatest continuity.
266+
- If the code hasn't changed much, it won't have much effect.
267+
268+
To balance these requires choosing a good refresh period. A period of three
269+
years is reasonable:
270+
- It's not too frequent (as 1 year would be, for example) while avoiding some
271+
sub-optimal occurrences from the past (e.g. in 2022 numerous crates that were
272+
more than five years old were updated).
273+
- It aligns with the Rust edition cycle.
274+
275+
Update policy
276+
- The third-party crates should be updated in the year following a new edition.
277+
(Based on the current edition cadence, this is every three years. If the
278+
edition cadence changes in the future, this period should be reconsidered.)
279+
The update should occur roughly six months after the edition hits a stable
280+
Rust release, to give crate authors a decent amount of time to update to the
281+
new edition.
282+
- All third-party crates that have had at least one new release should be
283+
updated, even if not much code has changed. This avoids having to make
284+
decisions about whether a crate has changed enough.
285+
- When doing this mass update, there may be some benchmarks that are deemed no
286+
longer interesting and removed. Likewise, there may be some new benchmarks
287+
that are added.
288+
- New versions should be added before old versions are removed, to ensure
289+
continuity of profiling coverage.
290+
- The ad hoc addition and removal of individual benchmarks can continue
291+
independently of this update cycle, as per the judgment of the rustc-perf
292+
maintainers.
293+
294+
History:
295+
- The first mass update of third-party crates occurred in [March/April
296+
2022](https://hackmd.io/d9uE7qgtTWKDLivy0uoVQw).

0 commit comments

Comments
 (0)