2022-05-17 Triage Log

It was a somewhat quiet week with real-world benchmarks showing a slight improvement on average and only one real-world crate, bitmaps, experiencing regressions. Unfortunately, the cause of the regressions don't look straightforward though. The biggest performance win came from a change to not encode attributes in metadata that are only used within the local crate. This improved doc builds of 16 of the 18 real world crates we run in our performance suite!

Triage done by @rylev. Revision range: c51871..7355d

Summary:

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count79404347
mean1.6%2.6%-0.6%-1.3%-0.3%
max1.9%3.5%-2.6%-2.6%-2.6%

2 Regressions, 4 Improvements, 0 Mixed; 0 of them in rollups 51 artifact comparisons made in total

Regressions

Add EarlyBinder #96883 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count70007
mean1.7%N/AN/AN/A1.7%
max2.0%N/AN/AN/A2.0%
  • Regressions are exclusively in bitmaps-3.1.0 in both full and incr-full scenarios. This benchmark stresses trait related code in the compiler.
  • Looks like specialization_graph_of is taking more time which is trait related so it makes sense.
  • Left a comment asking if anyone has any more clues.

Retire ItemLikeVisitor trait #96825 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count06050
meanN/A4.2%N/A-0.3%N/A
maxN/A4.8%N/A-0.4%N/A
  • This regression seems to be taking place exclusively in the externs stress test.
  • The native_library_kind query is being hit more often. Since that query is going to be used a lot in the externs crate, it makes sense it would be the one to show regressions.
  • The cachegrind diff for externs debug full shows a big regression in calls to rustc_metadata::rmeta::decoder::cstore_impl::provide which calls into native_library_kind.
  • Left a comment asking why that might be the case.

Improvements

don't encode only locally used attrs #95562 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00222322
meanN/AN/A-0.8%-1.8%-0.8%
maxN/AN/A-2.7%-2.8%-2.7%

rustc: Stricter checking for #[link] attributes #96885 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00090
meanN/AN/AN/A-0.8%N/A
maxN/AN/AN/A-1.2%N/A

optimize insert_range method of IntervalSet #96895 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00060
meanN/AN/AN/A-1.3%N/A
maxN/AN/AN/A-2.4%N/A

Clean up derived obligation creation #96892 (Comparison Link)

Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count00313
meanN/AN/A-0.4%-0.4%-0.4%
maxN/AN/A-0.6%-0.4%-0.6%