Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions triage/2024-09-23.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# 2024-09-23 Triage Log

Not much happened this week. Most changes of note were readily
justified as removing sources of unpredictable/inconsistent behavior
from code-generation.

Triage done by **@pnkfelix**.
Revision range: [170d6cb8..749f80ab](https://perf.rust-lang.org/?start=170d6cb845c8c3f0dcec5cdd4210df9ecf990244&end=749f80ab051aa0b3724b464130440b0e70a975ac&absolute=false&stat=instructions%3Au)

**Summary**:

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.7% | [0.2%, 2.5%] | 8 |
| Regressions ❌ <br /> (secondary) | 1.2% | [0.1%, 3.2%] | 4 |
| Improvements ✅ <br /> (primary) | -0.3% | [-0.4%, -0.3%] | 9 |
| Improvements ✅ <br /> (secondary) | -0.9% | [-1.7%, -0.2%] | 23 |
| All ❌✅ (primary) | 0.2% | [-0.4%, 2.5%] | 17 |


1 Regression, 0 Improvements, 4 Mixed; 1 of them in rollups
28 artifact comparisons made in total

#### Regressions

Remove semi-nondeterminism of `DefPathHash` ordering from inliner [#130455](https://github.com/rust-lang/rust/pull/130455) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2e367d94f05f3c6170f4d49f5e387cfaa0c42c32&end=46b0f8bafcf11fa1d6b6c172f4f5c1b95c11ebdb&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:----:|:------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.8% | [0.3%, 2.5%] | 5 |
| Regressions ❌ <br /> (secondary) | 0.6% | [0.1%, 1.0%] | 3 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | 0.8% | [0.3%, 2.5%] | 5 |

* primary regressions are all to opt-full for hyper (-2.54%), clap (-0.69%), html5ever (-0.36%), image (-0.31%), cargo (-0.27%)
* from detailed results on hyper, looks like `mir_callgraph_reachable` doubled in instr-count; if I'm reading the table right,
it seems like it is being called nearly twice as often as before? But this outcome seems like it might be expected, since
this PR is deliberately removing some code that would bail out early from that call.
* it looks like @**Ben Kimock (Saethlin)** had already
[attempted to mark](https://github.com/rust-lang/rust/pull/130455#issuecomment-2354849189) this as triaged (due to it being
acceptable overhead for the benefit of better de

#### Improvements

(nothing of note)

#### Mixed

read_volatile __rust_no_alloc_shim_is_unstable in alloc_zeroed [#130497](https://github.com/rust-lang/rust/pull/130497) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=aaed38b2a631dfc593454abf471d75d84033773e&end=7fc70f870a1d11c3b104274d3a18112996cdec9a&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.5% | [0.5%, 0.5%] | 1 |
| Regressions ❌ <br /> (secondary) | - | - | 0 |
| Improvements ✅ <br /> (primary) | -0.5% | [-0.7%, -0.3%] | 2 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | -0.2% | [-0.7%, 0.5%] | 3 |

* cranelift-codegen opt-full-llvm regressed by -0.48%.
* marking as triaged; this is bringing the two allocator paths into consistency with eachother (the question of whether we want these volatile reads at all, and how to otherwise achieve their effect on the end-to-end developer experience, is an [entirely separate question](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Different.20mechanism.20for.20__rust_no_alloc_shim_is_unstable/near/462025387)).

Rollup of 9 pull requests [#130534](https://github.com/rust-lang/rust/pull/130534) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f79a912d9edc3ad4db910c0e93672ed5c65133fa&end=a5cf8bbd4e1c8edeae08778c85c6f806dd00e853&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.3% | [0.2%, 0.3%] | 3 |
| Regressions ❌ <br /> (secondary) | - | - | 0 |
| Improvements ✅ <br /> (primary) | - | - | 0 |
| Improvements ✅ <br /> (secondary) | -1.1% | [-1.2%, -0.6%] | 4 |
| All ❌✅ (primary) | 0.3% | [0.2%, 0.3%] | 3 |

* syn regressed on three variant profiles: check incr-unchanged (-0.28%), check incr-patched:println (-0.27%), and debug incr-unchanged (-0.23%)
* [detailed perf results](https://perf.rust-lang.org/detailed-query.html?commit=a5cf8bbd4e1c8edeae08778c85c6f806dd00e853&benchmark=syn-1.0.89-check&scenario=incr-unchanged&base_commit=f79a912d9edc3ad4db910c0e93672ed5c65133fa&sort_idx=-11) indicates that incr_comp_persist_dep_graph went from 0.002 seconds to 0.14 seconds; a delta that accounts for the vast bulk of the difference here...
* but from examining the PR's that follow, it doesn't seem like that result persists into the future. (Also, I'm realizing that the detailed results are presenting seconds, not instruction-counts, and therefore they are probably wildly unstable between runs...)
* marking as triaged; this isn't worth investigating further.

Support `char::encode_utf8` in const scenarios. [#130511](https://github.com/rust-lang/rust/pull/130511) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=df7f77811c8806f85522a38878c57fde221138c9&end=f8192ba0d00bbbc58a10c45823ba010e98ea4474&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.3% | [0.3%, 0.4%] | 3 |
| Regressions ❌ <br /> (secondary) | - | - | 0 |
| Improvements ✅ <br /> (primary) | -0.4% | [-0.5%, -0.3%] | 2 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | 0.0% | [-0.5%, 0.4%] | 5 |

* primary regressions to opt-full on clap (-0.38%), image (-0.33%), and webrender (-0.31%).
* from inspection, it seems like this may just be a natural (and small, acceptable) artifact of the changes to which things get const-eval'ed.
* marking as triaged


Get rid of niche selection's dependence on fields's order [#130508](https://github.com/rust-lang/rust/pull/130508) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=749f80ab051aa0b3724b464130440b0e70a975ac&end=902f2956a627bd1bd44557b7fe6427a099bf8c48&stat=instructions:u)

| (instructions:u) | mean | range | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions ❌ <br /> (secondary) | 0.5% | [0.2%, 0.9%] | 3 |
| Improvements ✅ <br /> (primary) | -0.6% | [-0.6%, -0.6%] | 1 |
| Improvements ✅ <br /> (secondary) | - | - | 0 |
| All ❌✅ (primary) | -0.2% | [-0.6%, 0.2%] | 2 |

* primary regression to typenum doc-full (-0.23%)
* marking as triaged; this is a very small (and probably semi-random) cost for a clear win IMO in terms of overall consistency of behavior.
Loading