-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Performance audit, Spring 2017 #41469
Conversation
This improves LLVM performance by 10% lost during the shimmir transition.
this improves typeck & trans performance by 1%. This looked hotter on callgrind than it is on a CPU.
That method is *incredibly* hot, so this ends up saving 10% of trans time. BTW, we really should be doing dependency tracking there - and possibly be taking the respective perf hit (got to find a way to make DTMs fast), but `layout_cache` is a non-dep-tracking map.
this avoids parsing item attributes on each call to `item_attrs`, which takes off 33% (!) of translation time and 50% (!) of trans-item collection time.
improves trans performance by *another* 10%.
this improves trans performance by *another* 10%.
this is another one of these things that looks *much* worse on valgrind.
In some cases (e.g. <[int-var] as Add<[int-var]>>), selection can turn up a large number of candidates. Bailing out early avoids O(n^2) performance. This improves item-type checking time by quite a bit, resulting in ~2% of total time-to-typeck.
📌 Commit a660ad8 has been approved by |
r? @pnkfelix (rust_highfive has picked a reviewer for you, use r? to override) |
💡 This pull request was already approved, no need to approve it again.
|
📌 Commit a660ad8 has been approved by |
Performance audit, Spring 2017 Fix up some quite important performance "surprises" I've found running callgrind on rustc.
☀️ Test successful - status-appveyor, status-travis |
I am using: I was unable to install the 2017-05-04 nightly because of a known issue. The 2017-05-03 Nightly has shown a performance regression when I compile with just "rustc --emit=metadata". Perhaps a commit has removed the performance enhancement of this Performance audit. Before I open a regression report perhaps @arielb1 could take a quick look at the timings. |
@leonardo-m It's best to file a regression report, since this will likely go unnoticed and is also hard to prioritize. Please include the code sample that you used, since that will make it easier for others to diagnose the regression. |
Fix up some quite important performance "surprises" I've found running callgrind on rustc.