Skip to content

Commit a9bfea5

Browse files
authored
Merge pull request #989 from rylev/triage-2021-09-01
Add triage for 2021-09-01
2 parents 1c53a70 + 0e29690 commit a9bfea5

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

triage/2021-09-01.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# 2021-09-01 Triage Log
2+
3+
A very busy week with relatively even amounts of regressions and improvements (albeit with improvements outweighing regressions). The largest win was the use of profile-guided optimization (PGO) builds on x86_64 linux builds which brings fairly large improvements in real-world crates. There were 2 regressions that caused fairly large (~3.5%) regressions in real-world crates which need to be investigated.
4+
5+
Triage done by **@rylev**.
6+
Revision range: [33fdb797f59421c7bbecaa4588ed5d7a31a9494a..fe37929e4cba2c5c21e6805805769630c736bc3d](https://perf.rust-lang.org/?start=33fdb797f59421c7bbecaa4588ed5d7a31a9494a&end=fe37929e4cba2c5c21e6805805769630c736bc3d&absolute=false&stat=instructions%3Au)
7+
8+
5 Regressions, 4 Improvements, 5 Mixed; 0 of them in rollups
9+
56 comparisons made in total
10+
11+
#### Regressions
12+
13+
Get piece unchecked in `write` [#83302](https://github.com/rust-lang/rust/issues/83302)
14+
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a49e38e672c60da788360e088f00ad12353e3913&end=de42550d0ac525f44ec79300a1cb349ade181c1a&stat=instructions:u) (up to 3.5% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo`)
15+
- This is a largely a change in std lib code, and we don't really have a good process for dealing with how std lib changes effect performance.
16+
- This seems to be primarily affecting debug and check builds, but there doesn't seem to be a query that is clearly to blame here. Given the motivation of this PR is primarily performance, I think it deserves a closer look.
17+
- Added a comment on the PR [here](https://github.com/rust-lang/rust/pull/83302#issuecomment-910058149).
18+
19+
20+
Warn about unreachable code following an expression with an uninhabited type [#85556](https://github.com/rust-lang/rust/issues/85556)
21+
- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=de42550d0ac525f44ec79300a1cb349ade181c1a&end=5ca596f486707ac1362edad717ad0e9f5b71d0a3&stat=instructions:u) (up to 9.0% on `incr-unchanged` builds of `webrender-wrench`)
22+
- This regression seems to only be happening in one benchmark `webrender-wrench` and is consistently affecting the `extern_crate`,
23+
`incr_comp_intern_dep_graph_node`, and `metadata_decode_entry_extern_crate` queries.
24+
- Given the nature of the change which only impacts liveness checking, I'm unsure why this might be the case. However, given that the regressions are fairly large, I do think additional investigation is worth looking into.
25+
- Left a comment on the PR [here](https://github.com/rust-lang/rust/pull/85556#issuecomment-910064890).
26+
27+
28+
lazily "compute" anon const default substs [#87280](https://github.com/rust-lang/rust/issues/87280)
29+
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=ad02dc46badee510bd3a2c093edf80fcaade91b1&end=517c28e421b0d601c6f8eb07ea6aafb8e16975ad&stat=instructions:u) (up to 4.8% on `full` builds of `ctfe-stress-4`)
30+
- This is an important change for const generics, and the const generics team discussed whether the performance hit seemed worth it, and they reached this conclusion [that it was](https://github.com/rust-lang/rust/pull/87280#issuecomment-906288243).
31+
32+
Treat types in unnormalized function signatures as well-formed [#88312](https://github.com/rust-lang/rust/issues/88312)
33+
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=66acdee9f7822ff2427f2b967e537215421eeb16&end=59ce76548484806ac4970c57c0bb6ad9e53b80f6&stat=instructions:u) (up to 3.4% on `full` builds of `serde`)
34+
- This regression affects many real world crates in significant ways. The query affected by this seems to be additional calls to `implied_outlives_bounds` which I believe would be impacted by this change.
35+
- Left a comment on the PR [here](https://github.com/rust-lang/rust/pull/88312#issuecomment-910073037).
36+
37+
38+
build llvm libunwind.a in rustbuild [#85600](https://github.com/rust-lang/rust/issues/85600)
39+
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=42a2a53ec13b0e6e915acd09a2a9a963e5fa3b92&end=926f069950d7211a87fbd81778b420de420daad7&stat=instructions:u) (up to 0.3% on `incr-patched: println` builds of `regression-31157`)
40+
- The performance change is rather small, but quite surprising since the change is just in how linunwind is being build which (presumably?) should mean that this is a perf noop.
41+
- Left a comment on the PR [here](https://github.com/rust-lang/rust/pull/85600#issuecomment-910075406), but noted that it didn't seem strictly necessary to investigate due to the rather small impact of the performance change.
42+
43+
44+
#### Improvements
45+
46+
PGO for LLVM builds on x86_64-unknown-linux-gnu in CI [#88069](https://github.com/rust-lang/rust/issues/88069)
47+
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=0afc20860eb98a29d9bbeea80f2acc5be38c6bf3&end=c4be230b4a30eb74e3a3908455731ebc2f731d3d&stat=instructions:u) (up to -6.4% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo`)
48+
49+
50+
Morph `layout_raw` query into `layout_of`. [#88308](https://github.com/rust-lang/rust/issues/88308)
51+
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=20997f6ad81721542e9ef97bb2f58190903a34d8&end=4b9f4b221b92193c7e95b1beb502c6eb32c3b613&stat=instructions:u) (up to -12.2% on `incr-full` builds of `ctfe-stress-4`)
52+
53+
54+
Introduce `~const` [#88328](https://github.com/rust-lang/rust/issues/88328)
55+
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=dfd84729d6b7060edcb66694e6e44aae9e2ac57d&end=ac50a53359328a5d7f2f558833e63d59d372e4f7&stat=instructions:u) (up to -0.8% on `incr-unchanged` builds of `derive`)
56+
57+
58+
Cow'ify some pprust methods [#88262](https://github.com/rust-lang/rust/issues/88262)
59+
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=daa4dc997c777676b0f0e48d0311cc5e7bde5f87&end=ae0b03bc6b4e1544f43b9a8053bdb0f0ed4a19e1&stat=instructions:u) (up to -0.6% on `incr-patched: println` builds of `html5ever`)
60+
61+
62+
Don't use `guess_head_span` in `predicates_of` for foreign span [#88414](https://github.com/rust-lang/rust/issues/88414)
63+
- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=56ea5e0ee948999a916ff5f3d78ed79716d1006b&end=1e37e83dc05a7c359ebb88188b0a2179a8ec9067&stat=instructions:u) (up to -2.2% on `incr-unchanged` builds of `unify-linearly`)
64+
65+
66+
#### Mixed
67+
68+
Normalize projections under binders [#85499](https://github.com/rust-lang/rust/issues/85499)
69+
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=7b0e554ee2c94e9b3865a8c2d24d720224512dec&end=0afc20860eb98a29d9bbeea80f2acc5be38c6bf3&stat=instructions:u) (up to -36.8% on `incr-unchanged` builds of `deeply-nested-async`)
70+
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=7b0e554ee2c94e9b3865a8c2d24d720224512dec&end=0afc20860eb98a29d9bbeea80f2acc5be38c6bf3&stat=instructions:u) (up to 1.4% on `incr-patched: add static arr item` builds of `coercions`)
71+
- The large wins are in the `deeply-nested-async` benchmark which due to being a stress test can often have big swings in performance.
72+
- A perf run was run on the PR, and it was not labeled as a mixed result because of slightly different thresholds that were used back then.
73+
- The PR is a pretty important one and the perf results are largely neutral so need to ping the authors here.
74+
75+
76+
Use undef for uninitialized bytes in constants [#83698](https://github.com/rust-lang/rust/issues/83698)
77+
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=3b3ce374d203445eb1d0dce50f4211f4aceb7db6&end=20997f6ad81721542e9ef97bb2f58190903a34d8&stat=instructions:u) (up to -10.3% on `full` builds of `ctfe-stress-4`)
78+
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=3b3ce374d203445eb1d0dce50f4211f4aceb7db6&end=20997f6ad81721542e9ef97bb2f58190903a34d8&stat=instructions:u) (up to 0.6% on `incr-patched: println` builds of `coercions`)
79+
- Largely a performance win albeit in ctf-stress-test which being a stress test can yield large changes in certain cases.
80+
- The regressions here are all very small, and overall despite this being technically a mixed result, the improvements outweigh the regressions.
81+
82+
83+
`#[inline]` non-generic `pub fn`s in `rustc_target::abi` and `ty::layout`. [#88326](https://github.com/rust-lang/rust/issues/88326)
84+
- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=720a1b23c1eda3c78e28126362238a500eaa20d4&end=dfd6306d26af1a163aaaa1456b4594244ddd182f&stat=instructions:u) (up to -1.5% on `incr-patched: add static arr item` builds of `coercions`)
85+
- Very small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=720a1b23c1eda3c78e28126362238a500eaa20d4&end=dfd6306d26af1a163aaaa1456b4594244ddd182f&stat=instructions:u) (up to 0.3% on `full` builds of `ripgrep`)
86+
- The PR author already noticed that this ended up being a bit of a wash in terms of [performance](https://github.com/rust-lang/rust/pull/88326#issuecomment-907122343). Given that improvements still outweigh regressions, there's no need to look into this (though I imagine the author will continue to do so).
87+
88+
89+
Treat macros as HIR items [#88019](https://github.com/rust-lang/rust/issues/88019)
90+
- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=2031fd6e46fbe4da271bb23d55c211b2e16dd91f&end=05cccdc9b321e6565b3e62e8b52aec53d106ef2f&stat=instructions:u) (up to -3.2% on `incr-unchanged` builds of `tuple-stress`)
91+
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=2031fd6e46fbe4da271bb23d55c211b2e16dd91f&end=05cccdc9b321e6565b3e62e8b52aec53d106ef2f&stat=instructions:u) (up to 0.8% on `incr-unchanged` builds of `wg-grammar`)
92+
- The improvements here outweigh the regressions considerably, and this is a fairly important bug fix. This PR has already had its performance [justified](https://github.com/rust-lang/rust/pull/88019#issuecomment-901585864).
93+
94+
95+
#### Untriaged Pull Requests
96+
97+
- [#87815 encode `generics_of` for fields and ty params](https://github.com/rust-lang/rust/pull/87815)
98+
- [#87781 Remove box syntax from compiler and tools](https://github.com/rust-lang/rust/pull/87781)
99+
- [#87640 Rollup of 9 pull requests](https://github.com/rust-lang/rust/pull/87640)
100+
- [#87587 Various refactorings of the TAIT infrastructure](https://github.com/rust-lang/rust/pull/87587)
101+
- [#87570 Upgrade to LLVM 13](https://github.com/rust-lang/rust/pull/87570)
102+
- [#87244 Better diagnostics with mismatched types due to implicit static lifetime](https://github.com/rust-lang/rust/pull/87244)
103+
- [#86898 Add fast path for Path::cmp that skips over long shared prefixes](https://github.com/rust-lang/rust/pull/86898)
104+
- [#86777 Include terminators in instance size estimate](https://github.com/rust-lang/rust/pull/86777)
105+
- [#86698 Move OnDiskCache to rustc_query_impl.](https://github.com/rust-lang/rust/pull/86698)
106+
- [#86588 Rollup of 8 pull requests](https://github.com/rust-lang/rust/pull/86588)
107+
- [#86034 Change entry point to 🛡️ against 💥 💥-payloads](https://github.com/rust-lang/rust/pull/86034)
108+
- [#84560 Inline Iterator as IntoIterator.](https://github.com/rust-lang/rust/pull/84560)
109+
- [#80357 Introduce `hir::ExprKind::Let` - Take 2](https://github.com/rust-lang/rust/pull/80357)
110+

0 commit comments

Comments
 (0)