Conversation
This reverts commit b9b29c4.
|
@bors try |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
perf experiment for #147185
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (f3ba3f5): comparison URL. Overall result: ❌✅ regressions and improvements - please read the text belowBenchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf. Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @bors rollup=never Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary -2.8%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 2.0%, secondary 0.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 474.692s -> 475.969s (0.27%) |
|
I have no explanation how this can make such a big difference for |
|
Cc @rust-lang/wg-compiler-performance in case someone has any idea how this could be happening. |
134bed6 to
dd40018
Compare
|
@bors try |
This comment has been minimized.
This comment has been minimized.
perf experiment for #147185
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (9fcd3c8): comparison URL. Overall result: no relevant changes - no action neededBenchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf. @bors rollup=never Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)Results (primary 2.1%, secondary 1.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 2.1%, secondary -0.4%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 475.179s -> 475.205s (0.01%) |
ece2bd9 to
82b29a4
Compare
82b29a4 to
60765e3
Compare
|
@bors try |
|
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
perf experiment for #147185
This comment has been minimized.
This comment has been minimized.
|
https://perf.rust-lang.org/detailed-query.html?commit=f3ba3f55843086cd3e7e91cfccec0c492804392d&benchmark=syn-2.0.101-check&scenario=incr-unchanged&base_commit=907705abea355952d84ed39cea256ed4570bdda6 there were some query changes, maybe that could be it? Cachegrind diff looks kinda interesting: Maybe there are a bunch of new warnings emitted after your PR? vs |
|
The query changes looked entirely insignificant to me... or maybe I just don't know how to read that page.
Where did you get that output from? We did crater this, but maybe this is an ancient version of |
|
I just ran |
|
The syn version is 6 months old, for reference, so not exactly ancient. |
|
Ah, on the latest nightly we are getting And I guess what we are seeing is the effort of rendering those lints. Good catch, thanks! |
|
Yeah, the diagnostics emitting code is ludicrously slow. |
…=nnethercote repr(transparent) check: do not compute check_unsuited more than once `field_infos` is an iterator that we execute multiple times. However, we usually ignore the `unsuited` field -- we only need it in the last iteration. So move the computation of that field to that iteration to avoid computing it multiple times. Computing `unsuited` involves a recursive traversal over the types of all non-trivial fields, so there can be non-trivial amounts of work here. (I benchmarked this in rust-lang#148243 and saw no changes, probably because we don't have a benchmark with many repr(transparent) types. But still, computing this each time just seemed silly.)
Rollup merge of #148281 - RalfJung:repr-transparent-check, r=nnethercote repr(transparent) check: do not compute check_unsuited more than once `field_infos` is an iterator that we execute multiple times. However, we usually ignore the `unsuited` field -- we only need it in the last iteration. So move the computation of that field to that iteration to avoid computing it multiple times. Computing `unsuited` involves a recursive traversal over the types of all non-trivial fields, so there can be non-trivial amounts of work here. (I benchmarked this in #148243 and saw no changes, probably because we don't have a benchmark with many repr(transparent) types. But still, computing this each time just seemed silly.)
repr(transparent) check: do not compute check_unsuited more than once `field_infos` is an iterator that we execute multiple times. However, we usually ignore the `unsuited` field -- we only need it in the last iteration. So move the computation of that field to that iteration to avoid computing it multiple times. Computing `unsuited` involves a recursive traversal over the types of all non-trivial fields, so there can be non-trivial amounts of work here. (I benchmarked this in rust-lang/rust#148243 and saw no changes, probably because we don't have a benchmark with many repr(transparent) types. But still, computing this each time just seemed silly.)
Trying to figure out why #147185 regresses
synbuilds so much.