Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimized string FromIterator + Extend impls #56548

Merged
merged 3 commits into from
Dec 6, 2018

Conversation

Lucretiel
Copy link
Contributor

I noticed that there was a lost opportunity to reuse string buffers in FromIterator<String> and FromIterator<Cow<str>>; updated the implementations to use these. In practice this translates to at least one fewer allocation when using these APIs.

Additionally, rewrote Extend implementations to use iter.for_each, which (supposedly) helps the compiler optimize those loops (because iterator adapters are encouraged to provide optimized implementations of fold and try_fold.

@rust-highfive
Copy link
Collaborator

r? @sfackler

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 5, 2018
@Lucretiel
Copy link
Contributor Author

Fixes #51541

@rust-highfive

This comment has been minimized.

@rust-highfive

This comment has been minimized.

@sfackler
Copy link
Member

sfackler commented Dec 6, 2018

LGTM other than a quick explanatory comment!

@sfackler
Copy link
Member

sfackler commented Dec 6, 2018

@bors r+ rollup

Thanks!

@bors
Copy link
Contributor

bors commented Dec 6, 2018

📌 Commit 811a2bf has been approved by sfackler

@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 Dec 6, 2018
pietroalbini added a commit to pietroalbini/rust that referenced this pull request Dec 6, 2018
…=sfackler

Optimized string FromIterator + Extend impls

I noticed that there was a lost opportunity to reuse string buffers in `FromIterator<String>` and `FromIterator<Cow<str>>`; updated the implementations to use these. In practice this translates to at least one fewer allocation when using these APIs.

Additionally, rewrote `Extend` implementations to use `iter.for_each`, which (supposedly) helps the compiler optimize those loops (because iterator adapters are encouraged to provide optimized implementations of `fold` and `try_fold`.
bors added a commit that referenced this pull request Dec 6, 2018
Rollup of 11 pull requests

Successful merges:

 - #56315 (Rustdoc inline macro reexport)
 - #56332 ([rustdoc] Specific crate search)
 - #56362 (Stabilise exhaustive integer patterns)
 - #56426 (libsyntax_pos: A few tweaks)
 - #56441 (rustbuild: Fix issues with compiler docs)
 - #56446 (pass the parameter environment to `traits::find_associated_item`)
 - #56500 (cleanup: remove static lifetimes from consts)
 - #56525 (Avoid extra copy and syscall in std::env::current_exe)
 - #56528 (Remove unused dependency (rustc_lint -> rustc_mir))
 - #56548 (Optimized string FromIterator + Extend impls)
 - #56553 (Don't print the profiling summary to stdout when -Zprofile-json is set)

Failed merges:

r? @ghost
@bors bors merged commit 811a2bf into rust-lang:master Dec 6, 2018
@Lucretiel Lucretiel deleted the string-extend-optimize branch December 6, 2018 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants