Repository navigation
Rollup of 2 pull requests - #165320
Rollup of 2 pull requests#165320
Conversation
They have the same signature now, so we can unify them. The implementation for tuple is selected based on whether the concatenated string contains field names.
… size Co-authored-by: Jules Bertholet <jules.bertholet@gmail.com>
Co-authored-by: Jules Bertholet <jules.bertholet@gmail.com>
…impl for c like enums
We still use `ThinVec<I::GenericArg>` in `GoalStalledOn`, where the narrowness of the type is important. But using `Vec<I::GenericArg>` elsewhere is a perf win for `CanonicalizerState::variables`, which has `clone_from` called on it a lot. (`Vec::clone_from` is better optimized than `ThinVec::clone_from`.)
Returning requires `take`, which means the next user of `CanonicalizerState` has to allocate a new vec. `finalize` has two callers, but only one of them needs `variables`. This commit makes it so that single caller just clones the vec out of `CanonicalizerState` itself.
Currently, `InferCtxt` has a `CanonicalizerState` that gets reused by each canonicalizer. This gives a good amount of reuse, but we can increase it by moving the state to `GlobalCaches`. And we actually need a vector of `CanonicalizerState`, though it can only get multiple elements if we are using multiple threads.
`compute_query_response_instantiation_values_in_universe` computes an `opt_values` vector but then only sometimes consults the contents. This commit makes it lazy for a small perf win.
`CanonicalVarValues::instantiate` builds a `var_values` using a closure to generate each element. That closure is passed the under-construction `var_values`, which is unusual. This commit renames the parameters in the closures to `prev_var_values` to make this unusual behaviour more obvious. The commit looks bigger than it really is because of formatting changes.
…r=nnethercote More derive(Debug) cleanups for structs This removes duplication from the debug helpers and unifies tuples with structs. More details in individual commits. I think this is makes the code simpler, but it's a bit of a judgement call. r? nnethercote
…zelmann New solver opts for diesel (part 3) A sequel to rust-lang#163981 and rust-lang#164234. These ones mostly relate to allocations. Details in individual commits. Local measurements: ``` solver icounts (B) ------ ----------- old 36.4 new (orig) 44.5 (1.22x) new (this PR) 42.4 (1.16x) ``` Also some small improvements on a range of other benchmarks. r? @jdonszelmann
|
@bors r+ p=5 force |
This comment has been minimized.
This comment has been minimized.
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 2a01bd6 (parent) -> 4c46afa (this PR) Test differencesShow 30 test diffs30 doctest diffs were found. These are ignored, as they are noisy. Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 4c46afa63688fb473618f9b3553d70b0c15a88eb --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
📌 Perf builds for each rolled up PR:
parent commit: 2a01bd6f8b In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: |
|
Finished benchmarking commit (4c46afa): comparison URL. Overall result: ✅ improvements - no action needed@rustbot label: -perf-regression 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 -1.1%, secondary 2.6%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 3.0%, secondary -3.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary -0.4%, secondary -0.3%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 487.539s -> 488.585s (0.21%) |
|
@rust-timer triage all |
Running triage with 10 benchmarksTriage only executes the benchmarks on rollup members, that were changed significantly on the rollup.
#165140 d4ef51e More derive(Debug) cleanups for structsInstruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (secondary 2.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesThis perf run didn't have relevant results for this metric. Binary sizeResults (primary -0.4%)A less reliable metric. May be of interest, but not used to determine the overall result above.
#165160 e77e2c9 New solver opts for diesel (part 3)Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (secondary -1.3%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -3.2%)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. |
Successful merges:
r? @ghost
Create a similar rollup