perf: Use 1 bit to track splatting in FnDecl#155852
perf: Use 1 bit to track splatting in FnDecl#155852teor2345 wants to merge 10 commits intorust-lang:mainfrom
Conversation
|
@bors try @rust-timer queue |
1 similar comment
This comment was marked as duplicate.
This comment was marked as duplicate.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
[perf experiment]: Use 1 bit to track splatting in FnDecl
This comment has been minimized.
This comment has been minimized.
[perf experiment]: Use 1 bit to track splatting in FnDecl
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (95d605f): comparison URL. Overall result: ❌ regressions - 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 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.0%, secondary -5.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 2.3%, secondary 2.3%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary 0.1%, secondary 0.2%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 488.117s -> 488.584s (0.10%) |
|
Perf between this PR and its parent #153697 is an 0.2% overall average improvement, with a few primary benchmarks regressing. Perf between this PR and its grandparent (rollup) #155687 is an 0.24% average improvement, and no primary benchmarks regress. So this is a win, new feature and better perf from the associated refactors. Edit: secondary regressions (worst first) are issue #46449, then coercions, then wg-grammar/externs. |
|
@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.
perf: Use 1 bit to track splatting in FnDecl
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (72799b4): comparison URL. Overall result: ❌ regressions - 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 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 3.5%, secondary 3.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -2.2%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary 0.1%, secondary 0.2%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 488.817s -> 487.887s (-0.19%) |
8a11dd0 to
ca09339
Compare
This PR is based on #153697, and is waiting for it to merge.
This PR reduces the perf impact of #153697, resulting in an average 0.24% primary benchmark improvement, and no primary regressions.
This experiment stores one bit for "any argument is splatted" in
FnDecl, then searches the arguments' attributes for the actual splatted index (if needed).It also inlines some hot functions, which likely contributes to the improvement.