|
| 1 | +# 2021-11-16 Triage Log |
| 2 | + |
| 3 | +A large amount of noise in the comparisons this week, likely due to new |
| 4 | +probabilistic query hash verification increasing likelihood of changes in each |
| 5 | +benchmark; solutions are being tracked in [rustc-perf#1105]. |
| 6 | + |
| 7 | +Otherwise, though, the week largely amounted to a neutral one for performance. |
| 8 | +There were some regressions, particularly in doc builds, as a result of the |
| 9 | +addition of portable SIMD. These are relatively speaking minor and primarily |
| 10 | +impact small crates. |
| 11 | + |
| 12 | +[rustc-perf#1105]: https://github.com/rust-lang/rustc-perf/issues/1105 |
| 13 | + |
| 14 | +Triage done by **@simulacrum**. |
| 15 | +Revision range: [eee8b9c7bafade55981d155dae71657f1cc55a22..934624fe5f66ce3fb8abf0597a6deb079783335f](https://perf.rust-lang.org/?start=eee8b9c7bafade55981d155dae71657f1cc55a22&end=934624fe5f66ce3fb8abf0597a6deb079783335f&absolute=false&stat=instructions%3Au) |
| 16 | + |
| 17 | +5 Regressions, 2 Improvements, 6 Mixed; 2 of them in rollups |
| 18 | + |
| 19 | +41 comparisons made in total |
| 20 | + |
| 21 | +#### Regressions |
| 22 | + |
| 23 | +pub use core::simd; [#89167](https://github.com/rust-lang/rust/issues/89167) |
| 24 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=e90c5fbbc5df5c81267747daeb937d4e955ce6ad&end=032dfe43605f4324966933078ffe6f717b77c7c8&stat=instructions:u) (up to 11.8% on `full` builds of `helloworld`) |
| 25 | +- Expected regression due to expansion of libcore size; this continues to be a |
| 26 | + pain point as we add features to the standard library. Largest regressions are |
| 27 | + in rustdoc builds as it's more sensitive to the addition of new traits and |
| 28 | + impls. |
| 29 | + |
| 30 | +proc_macro: Add an expand_expr method to TokenStream [#87264](https://github.com/rust-lang/rust/issues/87264) |
| 31 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=7594067b69eac2395f7b3b42d519a559dae2d9d9&end=3e018ce194ab16125747220676dd8a20aecd5196&stat=instructions:u) (up to 5.3% on `incr-unchanged` builds of `inflate`) |
| 32 | +- Incremental regressions are likely to be due to random hashing added for |
| 33 | + incr-comp verification (which we may decide to disable during perf collection |
| 34 | + to avoid this). Otherwise, the regression is minimal to TokenStream |
| 35 | + processing. |
| 36 | + |
| 37 | +MIRI says `reverse` is UB, so replace it with something LLVM can vectorize [#90821](https://github.com/rust-lang/rust/issues/90821) |
| 38 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=c26746af5a925bad66b7ed4f9e7c3018f00d4010&end=891ca5f63c3b3cfe3939710a728671243e881ed6&stat=instructions:u) (up to 0.8% on `full` builds of `deeply-nested`) |
| 39 | +- Unclear cause to these regressions, but they seem to larely be in doc builds. |
| 40 | + |
| 41 | +Rollup of 5 pull requests [#90769](https://github.com/rust-lang/rust/issues/90769) |
| 42 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=68ca579406f2fa9ec62710e4a4d5d3e07a168d3c&end=82af160c2cb9c349a0373cba98d8ad7f911f0d34&stat=instructions:u) (up to 84.9% on `full` builds of `webrender-wrench`) |
| 43 | +- Also has a small improvement, but that is likely to be the incremental |
| 44 | + verification noise. |
| 45 | + |
| 46 | +Added the --temps-dir option [#83846](https://github.com/rust-lang/rust/issues/83846) |
| 47 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=8e0293137f895a417fa043b9817c455150769406&end=9dbbbb12c0b796f35cbf5a518ac12846c969a214&stat=instructions:u) (up to 0.5% on `incr-unchanged` builds of `helloworld`) |
| 48 | +- Unclear what the cause of this is; we would not generally expect a regression |
| 49 | + from such an introduction. |
| 50 | + |
| 51 | +#### Improvements |
| 52 | + |
| 53 | +Use Vec extend and collect instead of repeatedly calling push [#90813](https://github.com/rust-lang/rust/issues/90813) |
| 54 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=e4c23daeb461ac02413eb36c8cefcc5530638a05&end=f31622a50b06e4e5775cf71d1dfe3e59ffc21aa5&stat=instructions:u) (up to -8.7% on `full` builds of `match-stress-enum`) |
| 55 | +- Excellent improvement to a number of benchmarks. Mostly limited to somewhat |
| 56 | + unrealistic stress tests. |
| 57 | + |
| 58 | +Address performance regression introduced by #90218 [#90845](https://github.com/rust-lang/rust/issues/90845) |
| 59 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=02063124f96aac10f8c5c70653242b0704d397e0&end=a2a7683e8f321e3c0b9d648ae480827b5ab70e1d&stat=instructions:u) (up to -5.1% on `full` builds of `regression-31157`) |
| 60 | + |
| 61 | + |
| 62 | +#### Mixed |
| 63 | + |
| 64 | +Replace Copy/Clone compiler magic on arrays with library impls [#86041](https://github.com/rust-lang/rust/issues/86041) |
| 65 | +- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=07acdb48a0e0b22d08a45e3ced0378e0027b40eb&end=d6082292a6f3207cbdacd6633a5b9d1476bb6772&stat=instructions:u) (up to -1.2% on `incr-unchanged` builds of `deeply-nested`) |
| 66 | +- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=07acdb48a0e0b22d08a45e3ced0378e0027b40eb&end=d6082292a6f3207cbdacd6633a5b9d1476bb6772&stat=instructions:u) (up to 1.0% on `full` builds of `cranelift-codegen`) |
| 67 | +- Limited regressions in codegen, mostly due to more complicated MIR for these |
| 68 | + impls when done in library code vs. directly generated. |
| 69 | + |
| 70 | +Optimize pattern matching [#90746](https://github.com/rust-lang/rust/issues/90746) |
| 71 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=3d29b6807740db74aeb9c2f626115e519dee4a62&end=936238a92b2f9d6e7afe7dda69b4afd903f96399&stat=instructions:u) (up to -5.3% on `full` builds of `match-stress-enum`) |
| 72 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=3d29b6807740db74aeb9c2f626115e519dee4a62&end=936238a92b2f9d6e7afe7dda69b4afd903f96399&stat=instructions:u) (up to 4.0% on `incr-unchanged` builds of `deep-vector`) |
| 73 | + |
| 74 | +rustdoc: Go back to loading all external crates unconditionally [#90489](https://github.com/rust-lang/rust/issues/90489) |
| 75 | +- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=936238a92b2f9d6e7afe7dda69b4afd903f96399&end=14a2fd640e0df9ee8cc1e04280b0c3aff93c42da&stat=instructions:u) (up to -3.9% on `incr-unchanged` builds of `deep-vector`) |
| 76 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=936238a92b2f9d6e7afe7dda69b4afd903f96399&end=14a2fd640e0df9ee8cc1e04280b0c3aff93c42da&stat=instructions:u) (up to 2.8% on `full` builds of `cargo`) |
| 77 | + |
| 78 | +Make RawVec private to alloc [#90542](https://github.com/rust-lang/rust/issues/90542) |
| 79 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=3e018ce194ab16125747220676dd8a20aecd5196&end=1b12d01903293453dd94aa170c82caf94415629f&stat=instructions:u) (up to -5.1% on `incr-unchanged` builds of `inflate`) |
| 80 | +- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=3e018ce194ab16125747220676dd8a20aecd5196&end=1b12d01903293453dd94aa170c82caf94415629f&stat=instructions:u) (up to 4.0% on `incr-unchanged` builds of `deep-vector`) |
| 81 | + |
| 82 | +Optimize Eq and Hash for Path/PathBuf [#90596](https://github.com/rust-lang/rust/issues/90596) |
| 83 | +- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=3b2c45441d7eefed63f6658ff8becd5a51eaeae1&end=c8e94975a6541e947a1bd4971e084c8ba637f2b6&stat=instructions:u) (up to -6.0% on `incr-unchanged` builds of `coercions`) |
| 84 | +- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=3b2c45441d7eefed63f6658ff8becd5a51eaeae1&end=c8e94975a6541e947a1bd4971e084c8ba637f2b6&stat=instructions:u) (up to 12.9% on `incr-unchanged` builds of `tuple-stress`) |
| 85 | + |
| 86 | +Rollup of 8 pull requests [#90945](https://github.com/rust-lang/rust/issues/90945) |
| 87 | +- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=a2a7683e8f321e3c0b9d648ae480827b5ab70e1d&end=934624fe5f66ce3fb8abf0597a6deb079783335f&stat=instructions:u) (up to -0.4% on `full` builds of `deeply-nested-async`) |
| 88 | +- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a2a7683e8f321e3c0b9d648ae480827b5ab70e1d&end=934624fe5f66ce3fb8abf0597a6deb079783335f&stat=instructions:u) (up to 0.3% on `incr-patched: println` builds of `clap-rs`) |
| 89 | + |
| 90 | +#### Untriaged Pull Requests |
| 91 | + |
| 92 | +- [#90883 Rollup of 3 pull requests](https://github.com/rust-lang/rust/pull/90883) |
| 93 | +- [#90839 Generate documentation in rustc `rustc_index::newtype_index` macro](https://github.com/rust-lang/rust/pull/90839) |
| 94 | +- [#90821 MIRI says `reverse` is UB, so replace it with something LLVM can vectorize](https://github.com/rust-lang/rust/pull/90821) |
| 95 | +- [#90769 Rollup of 5 pull requests](https://github.com/rust-lang/rust/pull/90769) |
| 96 | +- [#90746 Optimize pattern matching](https://github.com/rust-lang/rust/pull/90746) |
| 97 | +- [#90695 Rollup of 4 pull requests](https://github.com/rust-lang/rust/pull/90695) |
| 98 | +- [#90684 Change paths for `dist` command to match the components they generate](https://github.com/rust-lang/rust/pull/90684) |
| 99 | +- [#90645 Implement diagnostic for String conversion](https://github.com/rust-lang/rust/pull/90645) |
| 100 | +- [#90559 Optimize bidi character detection.](https://github.com/rust-lang/rust/pull/90559) |
| 101 | +- [#90542 Make RawVec private to alloc](https://github.com/rust-lang/rust/pull/90542) |
| 102 | +- [#90489 rustdoc: Go back to loading all external crates unconditionally](https://github.com/rust-lang/rust/pull/90489) |
| 103 | +- [#90485 Don't destructure args tuple in format_args!](https://github.com/rust-lang/rust/pull/90485) |
| 104 | +- [#90462 [master] Fix CVE-2021-42574](https://github.com/rust-lang/rust/pull/90462) |
| 105 | +- [#90443 Merge `DocContext.{ty,lt,ct}_substs` into one map](https://github.com/rust-lang/rust/pull/90443) |
| 106 | +- [#90422 Rollup of 5 pull requests](https://github.com/rust-lang/rust/pull/90422) |
| 107 | +- [#90235 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/90235) |
| 108 | +- [#90183 Show all Deref implementations recursively](https://github.com/rust-lang/rust/pull/90183) |
| 109 | +- [#90067 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/90067) |
| 110 | +- [#89939 Rollup of 10 pull requests](https://github.com/rust-lang/rust/pull/89939) |
| 111 | +- [#89858 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/89858) |
| 112 | +- [#89695 Move top part of print_item to Tera templates](https://github.com/rust-lang/rust/pull/89695) |
| 113 | +- [#89608 Rollup of 12 pull requests](https://github.com/rust-lang/rust/pull/89608) |
| 114 | +- [#89551 Stabilize `const_raw_ptr_deref` for `*const T`](https://github.com/rust-lang/rust/pull/89551) |
| 115 | +- [#89534 Introduce `tcx.get_diagnostic_name`](https://github.com/rust-lang/rust/pull/89534) |
| 116 | +- [#89435 Rollup of 6 pull requests](https://github.com/rust-lang/rust/pull/89435) |
| 117 | +- [#89405 Fix clippy lints](https://github.com/rust-lang/rust/pull/89405) |
| 118 | +- [#89263 Suggest both of immutable and mutable trait implementations](https://github.com/rust-lang/rust/pull/89263) |
| 119 | +- [#89165 Fix read_to_end to not grow an exact size buffer](https://github.com/rust-lang/rust/pull/89165) |
| 120 | +- [#89125 Don't use projection cache or candidate cache in intercrate mode](https://github.com/rust-lang/rust/pull/89125) |
| 121 | +- [#89124 Index and hash HIR as part of lowering](https://github.com/rust-lang/rust/pull/89124) |
0 commit comments