Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@yotamofek
Copy link
Contributor

@yotamofek yotamofek commented Oct 20, 2025

Includes a bunch of optimizations for a nice perf win

@rustbot rustbot added A-tidy Area: The tidy tool S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Oct 20, 2025
@Kobzol
Copy link
Member

Kobzol commented Oct 20, 2025

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Oct 20, 2025
[PERF] see if my fork of `stringdex` affects perf
@rust-bors

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Oct 20, 2025
@rust-bors
Copy link

rust-bors bot commented Oct 21, 2025

💥 Test timed out after 21600s

@notriddle
Copy link
Contributor

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Oct 21, 2025
[PERF] see if my fork of `stringdex` affects perf
@rust-bors
Copy link

rust-bors bot commented Oct 21, 2025

☀️ Try build successful (CI)
Build commit: cc4f770 (cc4f7703e067e4e62f404b76a3a1bd7c1d67b4ec, parent: c7a635f33c5fbd1ead110243a2f4a5f0561d79b0)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (cc4f770): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.6% [0.6%, 0.6%] 1
Improvements ✅
(primary)
-0.4% [-0.9%, -0.1%] 12
Improvements ✅
(secondary)
-0.5% [-0.9%, -0.3%] 3
All ❌✅ (primary) -0.4% [-0.9%, -0.1%] 12

Max RSS (memory usage)

Results (secondary -4.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.0% [-4.0%, -4.0%] 1
All ❌✅ (primary) - - 0

Cycles

Results (primary -2.4%, secondary 2.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.0% [2.0%, 2.0%] 1
Improvements ✅
(primary)
-2.4% [-2.4%, -2.4%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.4% [-2.4%, -2.4%] 1

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 472.842s -> 473.067s (0.05%)
Artifact size: 388.69 MiB -> 388.71 MiB (0.01%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Oct 21, 2025
@JonathanBrouwer
Copy link
Contributor

Performance looks excellent, the coercions result is clearly bimodal noise

@JonathanBrouwer JonathanBrouwer removed the perf-regression Performance regression. label Oct 21, 2025
@GuillaumeGomez
Copy link
Member

@yotamofek: Do you want to merge this one already?

@yotamofek
Copy link
Contributor Author

Nah, my changes to stringdex are a complete mess at the moment, I think it'll be better to first get a few of them up as PRs and have @notriddle go over them, and then released to crates.io. No point in depending on a fork when it's a crate that's owned by a project member.
(unless they don't have the capacity to review and/or work on stringdex)

@notriddle
Copy link
Contributor

It's fine. Send me the PR on GitLab, and I'll look at them ASAP.

@yotamofek
Copy link
Contributor Author

Still a WIP, but I've started PR-ing my changes and notriddle has merged a few of them already, and I'm interested in the interim perf results. Would love another perf run please 🙏
(the stringdex dep now points at the upstream repo, and not my fork)

@JonathanBrouwer
Copy link
Contributor

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@yotamofek yotamofek force-pushed the pr/stringdex-fork branch 3 times, most recently from 043522a to 0156490 Compare November 13, 2025 08:14
@yotamofek yotamofek changed the title [PERF] see if my fork of stringdex affects perf Upgrade stringdex to 0.0.3 Nov 13, 2025
@yotamofek yotamofek marked this pull request as ready for review November 13, 2025 08:16
@rustbot
Copy link
Collaborator

rustbot commented Nov 13, 2025

These commits modify the Cargo.lock file. Unintentional changes to Cargo.lock can be introduced when switching branches and rebasing PRs.

If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Nov 13, 2025
@rustbot
Copy link
Collaborator

rustbot commented Nov 13, 2025

r? @notriddle

rustbot has assigned @notriddle.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@yotamofek
Copy link
Contributor Author

Finally ready for review!

Thanks @notriddle for collaborating on this :)

Contains the dep upgrade itself, and some adaptations required.

TBH, I'm not completely sure about the changes to Cargo.lock (apart from the upgrade of stringdex itself), probably has to do with some changes to stringdex's dev dependencies.

@GuillaumeGomez
Copy link
Member

Feel free to r+ it if you don't need to wait for notriddle's approval.

@yotamofek
Copy link
Contributor Author

Thanks! He's already reviewed all my changes to stringdex, which are far more interesting than these adaptations.

@bors r=GuillaumeGomez rollup=never

@bors
Copy link
Collaborator

bors commented Nov 13, 2025

📌 Commit e921e28 has been approved by GuillaumeGomez

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 13, 2025
@bors
Copy link
Collaborator

bors commented Nov 13, 2025

⌛ Testing commit e921e28 with merge d682af8...

@bors
Copy link
Collaborator

bors commented Nov 13, 2025

☀️ Test successful - checks-actions
Approved by: GuillaumeGomez
Pushing d682af8 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Nov 13, 2025
@bors bors merged commit d682af8 into rust-lang:main Nov 13, 2025
12 checks passed
@rustbot rustbot added this to the 1.93.0 milestone Nov 13, 2025
@github-actions
Copy link
Contributor

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 5dbf406 (parent) -> d682af8 (this PR)

Test differences

Show 3 test diffs

3 doctest diffs were found. These are ignored, as they are noisy.

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard d682af88a57b0045f8348507682c16c6160b522d --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. aarch64-apple: 9147.8s -> 7325.6s (-19.9%)
  2. dist-aarch64-apple: 7369.2s -> 8641.4s (+17.3%)
  3. aarch64-gnu-llvm-20-2: 2598.8s -> 2198.6s (-15.4%)
  4. pr-check-1: 1753.7s -> 1512.9s (-13.7%)
  5. x86_64-gnu-aux: 6845.5s -> 6010.0s (-12.2%)
  6. x86_64-gnu-stable: 7882.2s -> 7039.3s (-10.7%)
  7. i686-gnu-nopt-1: 8055.7s -> 7229.1s (-10.3%)
  8. x86_64-gnu-tools: 3721.9s -> 3389.4s (-8.9%)
  9. aarch64-gnu-debug: 4336.8s -> 3967.5s (-8.5%)
  10. i686-gnu-2: 6102.0s -> 5585.4s (-8.5%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (d682af8): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.6% [-2.9%, -0.1%] 14
Improvements ✅
(secondary)
-0.7% [-1.4%, -0.3%] 3
All ❌✅ (primary) -0.6% [-2.9%, -0.1%] 14

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (primary -3.6%, secondary -0.7%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.5% [2.5%, 2.5%] 1
Improvements ✅
(primary)
-3.6% [-3.6%, -3.6%] 1
Improvements ✅
(secondary)
-3.9% [-3.9%, -3.9%] 1
All ❌✅ (primary) -3.6% [-3.6%, -3.6%] 1

Binary size

Results (primary -1.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-1.1% [-1.1%, -1.1%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -1.1% [-1.1%, -1.1%] 1

Bootstrap: 474.258s -> 472.838s (-0.30%)
Artifact size: 388.39 MiB -> 388.40 MiB (0.00%)

@rustbot rustbot removed the perf-regression Performance regression. label Nov 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants