-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revert part of #94372 to improve performance #97905
Conversation
I tried this reversion locally and got uniform regressions, which is consistent with the notion that #94732 was a clear performance win. |
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit e0812d425cee9b5a0575431b5ada6313054ffc41 with merge ab6773e662acf0c4faeafbdadd499bf9c50c575a... |
☀️ Try build successful - checks-actions |
Queued ab6773e662acf0c4faeafbdadd499bf9c50c575a with parent 282445a, future comparison URL. |
Finished benchmarking commit (ab6773e662acf0c4faeafbdadd499bf9c50c575a): comparison url. Instruction count
Max RSS (memory usage)Results
CyclesResults
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf. Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @bors rollup=never Footnotes |
Ok, those look very much like the inversion of the original results. I will try performance runs on some partial reversions, try to work out if a particular commit caused the problems. |
e0812d4
to
7f51a1b
Compare
I have updated to just revert the 5th (and final) commit. @bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit 7f51a1b with merge 9ce6b6f7727324e9d01fbc24ae3d77e53d1ee2ac... |
☀️ Try build successful - checks-actions |
Queued 9ce6b6f7727324e9d01fbc24ae3d77e53d1ee2ac with parent 420c970, future comparison URL. |
Finished benchmarking commit (9ce6b6f7727324e9d01fbc24ae3d77e53d1ee2ac): comparison url. Instruction count
Max RSS (memory usage)Results
CyclesResults
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf. @bors rollup=never Footnotes |
Ok, reverting the 5th commit didn't do much. Let's try reverting the 4th commit as well. @bors try @rust-timer queue |
I would guess so. Generic functions are codegened in the crate that uses them.
Yes. It would be nice to have the @bors r+ |
📌 Commit 3186e31 has been approved by |
⌛ Testing commit 3186e31 with merge 10fcd0a19dbd726aeb7ad57e116d78f4f1aab745... |
The job Click to see the possible cause of the failure (guessed by this bot)
|
💔 Test failed - checks-actions |
A double free, huh. But there's no unsafe code in this patch and it doesn't seem related... @bors retry |
☀️ Test successful - checks-actions |
Finished benchmarking commit (c845946): comparison url. Instruction count
Max RSS (memory usage)Results
CyclesResults
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. @rustbot label: -perf-regression Footnotes |
This avoids the name clash with `rustc_serialize::Encoder` (a trait), and allows lots qualifiers to be removed and imports to be simplified (e.g. fewer `as` imports). (This was previously merged as commit 5 in rust-lang#94732 and then was reverted in rust-lang#97905 because of a perf regression caused by commit 4 in rust-lang#94732.)
Rename rustc_serialize::opaque::Encoder as MemEncoder. This avoids the name clash with `rustc_serialize::Encoder` (a trait), and allows lots qualifiers to be removed and imports to be simplified (e.g. fewer `as` imports). (This was previously merged as commit 5 in rust-lang#94732 and then was reverted in rust-lang#97905 because of a perf regression caused by commit 4 in rust-lang#94732.) r? `@bjorn3`
Rename rustc_serialize::opaque::Encoder as MemEncoder. This avoids the name clash with `rustc_serialize::Encoder` (a trait), and allows lots qualifiers to be removed and imports to be simplified (e.g. fewer `as` imports). (This was previously merged as commit 5 in rust-lang#94732 and then was reverted in rust-lang#97905 because of a perf regression caused by commit 4 in rust-lang#94732.) r? ``@bjorn3``
Rename rustc_serialize::opaque::Encoder as MemEncoder. This avoids the name clash with `rustc_serialize::Encoder` (a trait), and allows lots qualifiers to be removed and imports to be simplified (e.g. fewer `as` imports). (This was previously merged as commit 5 in rust-lang#94732 and then was reverted in rust-lang#97905 because of a perf regression caused by commit 4 in rust-lang#94732.) r? ```@bjorn3```
This simplifies things, but requires making `CacheEncoder` non-generic. (This was previously merged as commit 4 in rust-lang#94732 and then was reverted in rust-lang#97905 because it caused a perf regression.)
… r=bjorn3 Move `finish` out of the `Encoder` trait. This simplifies things, but requires making `CacheEncoder` non-generic. (This was previously merged as commit 4 in rust-lang#94732 and then was reverted in rust-lang#97905 because it caused a perf regression.) r? `@ghost`
#94732 was supposed to give small but widespread performance improvements, as judged from three per-merge performance runs. But the performance run that occurred after merging included a roughly equal number of improvements and regressions, for unclear reasons.
This PR is for a test run reverting those changes, to see what happens.
r? @ghost