Repository navigation
New solver opts for diesel - #163981
New solver opts for diesel#163981nnethercote wants to merge 6 commits into
diesel#163981Conversation
The rust-analyzer impls of these methods will need to be removed on the next sync.
It's faster than `extend` to initialize these structures.
A lot of work can be skipped if the two values being related are equal. (There are various early-return equality checks like this further down the call chain, this just adds one earlier.)
The former has an early return check and a single call site, so the check can be moved before the call site. Also, in the `Err(NoSolution)` case we can skip the `CandidateHeadUsages::default()` stuff because that's just an empty list and `merge_usages` is a no-op.
Instead of getting it within `fast_reject_assumption`. `fast_reject_assumption` has three call sites. For two of them this change doesn't help perf, but the third call occurs in a loop, and this lets us get the goal lang item once per loop instead of once per loop element.
- Increase the number of preinterned type vars and anon bound types. - Preintern some root-universe placeholder types with anon bounds. - Adjust some comments. - Also rename a lot of the preinterning names for more consistency.
|
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
New solver opts for `diesel`
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (72d027b): comparison URL. Overall result: ❌✅ regressions and improvements - please read:Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf. Next, please: If you can, justify the regressions found in this try perf run in writing along with @bors rollup=never rustc-perf 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.7%, secondary 2.6%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 2.4%, secondary -1.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 484.956s -> 485.101s (0.03%) |
|
LLM disclosure: some of these changes were based on ideas from LLM analysis of profiles. I wrote the code and text myself. |
|
|
|
The perf results show big wins for diesel and smaller wins for some other benchmarks, including some new solver ones. There are very small regressions on |
|
☔ The latest upstream changes (presumably #164052) made this pull request unmergeable. Please resolve the merge conflicts by rebasing. |
A collection of small optimizations. Details in individual commits.
Local measurements:
Also some small improvements on a range of other benchmarks.
r? @jdonszelmann