2021-10-05 Triage Log
A fairly busy week, with a relatively high percentage of PRs landing with regressions and improvements. The overall trajectory is fairly neutral for this week though.
Triage done by @simulacrum. Revision range: 83f147b3baf21acfc367a6da1045d212cd3957e4..25ec8273855fde2d72ae877b397e054de5300e10
5 Regressions, 5 Improvements, 5 Mixed; 1 of them in rollups
43 comparisons made in total
Regressions
Don't anonymize bound region names during typeck #89250
- Moderate regression in instruction counts (up to 0.6% on
full
builds of coercions
) - Regression seems to be real, though no regressions in cycle counts are reported, so this is likely an acceptable hit.
Constify ?-operator for Result and Option #86853
- Moderate regression in instruction counts (up to 0.5% on
incr-full
builds of stm32f4
) - This is a small regression on the stm32f4 crate, due to a number of extra obligations that are created, presumably due to the checks for whether ? operators in this crate can be const. It is likely an acceptable change for the time being, particularly as the const-impls functionality is still in nascent stages and optimizations may come down the line.
- The PR ended up temporarily reverted by #89450, though not due to performance reasons.
Fix read_to_end to not grow an exact size buffer #89165
- Small regression in instruction counts (up to 0.7% on
full
builds of piston-image
) - This regression is unclear in cause, and investigation on the PR did not lead to a conclusion. However, the regression is fairly small and the change is expected to have impacts on more I/O heavy benchmarks than rustc is. Syscall counts were shown to improve on the PR, including for rustc, so the optimization seems to work in general.
Fix unsound optimization with explicit variant discriminants #89489
- Moderate regression in instruction counts (up to 2.3% on
full
builds of style-servo
) - This is an expected regression, but is clearly justified by the fix for an unsound optimization. We expect to reland it with appropriate changes in the future.
Fix clippy lints #89405
- Small regression in instruction counts (up to 0.4% on
incr-unchanged
builds of helloworld
) - Likely to be painful to investigate -- changes are widely scattered across the codebase and in theory “no-ops”.
Improvements
Restructure std::rt #89011
- Large improvement in instruction counts (up to -4.0% on
incr-patched: b9b3e592dd cherry picked
builds of style-servo
) - Significant improvement for this particular incremental benchmark (due to avoiding inlining from particular modules and as such recompilation of some CGUs) and -- as noted on the PR -- also a code size improvement, particularly relevant for small binaries.
Remove visible path calculation from allowed deprecation lint #89395
- Very large improvement in instruction counts (up to -10.9% on
incr-patched: minor change
builds of tokio-webpush-simple
) - Excellent improvement in multiple benchmarks, though unlikely to be terribly representative. Most of these benchmarks have -A deprecated passed by the perf.rlo runtime currently (since we do not meaningfully update benchmarks over time, we build up deprecation warnings).
Avoid nondeterminism in trimmed_def_paths #89408
- Large improvement in instruction counts (up to -2.0% on
incr-unchanged
builds of webrender-wrench
) - Fixes a regression introduced in #83343, not a standalone improvement.
Rollup of 14 pull requests #89512
- Moderate improvement in instruction counts (up to -1.4% on
incr-patched: static str 6144
builds of issue-46449
) - Unclear cause, but unlikely to receive much investigation as it's an improvement in a rollup -- we prioritize regressions.
Deriving: Include bound generic params in type parameters for where clause #89341
- Small improvement in instruction counts (up to -0.4% on
incr-unchanged
builds of helloworld
)
Mixed
Add more tracing instrumentation #89048
- Moderate improvement in instruction counts (up to -1.6% on
full
builds of keccak
) - Very large regression in instruction counts (up to 12.0% on
full
builds of ctfe-stress-4
) - Regression is mitigated by #89363, which just barely missed being included in this report.
Add an intermediate representation to exhaustiveness checking #88950
- Large improvement in instruction counts (up to -2.6% on
full
builds of unicode_normalization
) - Large regression in instruction counts (up to 2.9% on
full
builds of match-stress-enum
) - Code quality improvements mitigate the regressions, which are largely limited to a stress test.
Rollup of 6 pull requests #89435
- Small improvement in instruction counts (up to -0.3% on
incr-unchanged
builds of helloworld
) - Moderate regression in instruction counts (up to 0.8% on
incr-unchanged
builds of externs
) - Unclear cause for the regression. Hasn't been investigated yet.
Rework HIR API to make invocations of the hir_crate query harder. #88880
- Small improvement in instruction counts (up to -0.4% on
incr-unchanged
builds of helloworld
) - Small regression in instruction counts (up to 0.2% on
full
builds of many-assoc-items
) - Regressions are smaller than improvements. Original perf run didn't return regressions at all. Tagged for investigation.
resolve: Cache module loading for all foreign modules #89239
- Small regression in instruction counts (up to 0.8% on
incr-unchanged
builds of tokio-webpush-simple
) - From the PR: This corrects behaviour for macros 2.0 and avoids an ICE, so a 0.8% regression seems acceptable.
Untriaged Pull Requests
Investigation work continues, and we're down to 22 from 28 untriaged PRs week over week.