Use SmallVec for DepNodeIndex within dep_graph. by nnethercote · Pull Request #50565 · rust-lang/rust (original) (raw)
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 andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation3 Commits1 Checks0 Files changed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
This avoids a decent number of allocations, enough to speed up
incremental runs of many rustc-benchmarks, the best by 2%.
Here are the rustc-perf benchmarks that showed an improvement of at least 1% on one run:
unused-warnings-check
avg: -1.7% min: -2.4% max: 0.0%
unused-warnings-opt
avg: -1.4% min: -2.0% max: 0.0%
unused-warnings
avg: -1.4% min: -2.0% max: -0.0%
tokio-webpush-simple-check
avg: -1.0% min: -1.7% max: 0.0%
futures-opt
avg: -0.9% min: -1.6% max: 0.0%
encoding
avg: -1.2% min: -1.6% max: -0.6%
encoding-check
avg: -0.9% min: -1.6% max: 0.0%
encoding-opt
avg: -0.8% min: -1.6% max: -0.1%
futures
avg: -0.9% min: -1.5% max: 0.0%
futures-check
avg: -0.9% min: -1.5% max: 0.1%
regression-31157-check
avg: -0.9% min: -1.5% max: 0.0%
regex
avg: -0.6% min: -1.4% max: 0.0%
regression-31157-opt
avg: -0.5% min: -1.4% max: 0.1%
regression-31157
avg: -0.7% min: -1.4% max: 0.2%
regex-opt
avg: -0.6% min: -1.4% max: 0.1%
hyper-check
avg: -0.8% min: -1.4% max: -0.1%
regex-check
avg: -1.0% min: -1.4% max: 0.0%
hyper-opt
avg: -0.7% min: -1.4% max: -0.1%
hyper
avg: -0.7% min: -1.3% max: 0.1%
piston-image-opt
avg: -0.4% min: -1.3% max: 0.0%
tokio-webpush-simple-opt
avg: -0.3% min: -1.3% max: 0.0%
piston-image-check
avg: -0.5% min: -1.3% max: -0.0%
syn-opt
avg: -0.5% min: -1.3% max: 0.0%
clap-rs-check
avg: -0.3% min: -1.3% max: 0.2%
piston-image
avg: -0.5% min: -1.2% max: 0.1%
syn
avg: -0.5% min: -1.2% max: 0.1%
syn-check
avg: -0.6% min: -1.2% max: -0.1%
issue-46449-opt
avg: -0.4% min: -1.2% max: -0.1%
parser-check
avg: -0.7% min: -1.2% max: 0.1%
issue-46449
avg: -0.5% min: -1.2% max: -0.0%
This avoids a decent number of allocations, enough to speed up incremental runs of many rustc-benchmarks, the best by 2%.
r? @cramertj
(rust_highfive has picked a reviewer for you, use r? to override)
Thanks, @nnethercote!
@bors r+
You might also be interested in #45577, which tried to get rid of allocating the HashSet
. @julian-seward1 and I were a bit puzzled that that did not work at all.
📌 Commit 78262e7 has been approved by michaelwoerister
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
alexcrichton added a commit to alexcrichton/rust that referenced this pull request
…elwoerister
Use SmallVec for DepNodeIndex within dep_graph.
This avoids a decent number of allocations, enough to speed up incremental runs of many rustc-benchmarks, the best by 2%.
Here are the rustc-perf benchmarks that showed an improvement of at least 1% on one run:
unused-warnings-check
avg: -1.7% min: -2.4% max: 0.0%
unused-warnings-opt
avg: -1.4% min: -2.0% max: 0.0%
unused-warnings
avg: -1.4% min: -2.0% max: -0.0%
tokio-webpush-simple-check
avg: -1.0% min: -1.7% max: 0.0%
futures-opt
avg: -0.9% min: -1.6% max: 0.0%
encoding
avg: -1.2% min: -1.6% max: -0.6%
encoding-check
avg: -0.9% min: -1.6% max: 0.0%
encoding-opt
avg: -0.8% min: -1.6% max: -0.1%
futures
avg: -0.9% min: -1.5% max: 0.0%
futures-check
avg: -0.9% min: -1.5% max: 0.1%
regression-31157-check
avg: -0.9% min: -1.5% max: 0.0%
regex
avg: -0.6% min: -1.4% max: 0.0%
regression-31157-opt
avg: -0.5% min: -1.4% max: 0.1%
regression-31157
avg: -0.7% min: -1.4% max: 0.2%
regex-opt
avg: -0.6% min: -1.4% max: 0.1%
hyper-check
avg: -0.8% min: -1.4% max: -0.1%
regex-check
avg: -1.0% min: -1.4% max: 0.0%
hyper-opt
avg: -0.7% min: -1.4% max: -0.1%
hyper
avg: -0.7% min: -1.3% max: 0.1%
piston-image-opt
avg: -0.4% min: -1.3% max: 0.0%
tokio-webpush-simple-opt
avg: -0.3% min: -1.3% max: 0.0%
piston-image-check
avg: -0.5% min: -1.3% max: -0.0%
syn-opt
avg: -0.5% min: -1.3% max: 0.0%
clap-rs-check
avg: -0.3% min: -1.3% max: 0.2%
piston-image
avg: -0.5% min: -1.2% max: 0.1%
syn
avg: -0.5% min: -1.2% max: 0.1%
syn-check
avg: -0.6% min: -1.2% max: -0.1%
issue-46449-opt
avg: -0.4% min: -1.2% max: -0.1%
parser-check
avg: -0.7% min: -1.2% max: 0.1%
issue-46449
avg: -0.5% min: -1.2% max: -0.0%
alexcrichton added a commit to alexcrichton/rust that referenced this pull request
…elwoerister
Use SmallVec for DepNodeIndex within dep_graph.
This avoids a decent number of allocations, enough to speed up incremental runs of many rustc-benchmarks, the best by 2%.
Here are the rustc-perf benchmarks that showed an improvement of at least 1% on one run:
unused-warnings-check
avg: -1.7% min: -2.4% max: 0.0%
unused-warnings-opt
avg: -1.4% min: -2.0% max: 0.0%
unused-warnings
avg: -1.4% min: -2.0% max: -0.0%
tokio-webpush-simple-check
avg: -1.0% min: -1.7% max: 0.0%
futures-opt
avg: -0.9% min: -1.6% max: 0.0%
encoding
avg: -1.2% min: -1.6% max: -0.6%
encoding-check
avg: -0.9% min: -1.6% max: 0.0%
encoding-opt
avg: -0.8% min: -1.6% max: -0.1%
futures
avg: -0.9% min: -1.5% max: 0.0%
futures-check
avg: -0.9% min: -1.5% max: 0.1%
regression-31157-check
avg: -0.9% min: -1.5% max: 0.0%
regex
avg: -0.6% min: -1.4% max: 0.0%
regression-31157-opt
avg: -0.5% min: -1.4% max: 0.1%
regression-31157
avg: -0.7% min: -1.4% max: 0.2%
regex-opt
avg: -0.6% min: -1.4% max: 0.1%
hyper-check
avg: -0.8% min: -1.4% max: -0.1%
regex-check
avg: -1.0% min: -1.4% max: 0.0%
hyper-opt
avg: -0.7% min: -1.4% max: -0.1%
hyper
avg: -0.7% min: -1.3% max: 0.1%
piston-image-opt
avg: -0.4% min: -1.3% max: 0.0%
tokio-webpush-simple-opt
avg: -0.3% min: -1.3% max: 0.0%
piston-image-check
avg: -0.5% min: -1.3% max: -0.0%
syn-opt
avg: -0.5% min: -1.3% max: 0.0%
clap-rs-check
avg: -0.3% min: -1.3% max: 0.2%
piston-image
avg: -0.5% min: -1.2% max: 0.1%
syn
avg: -0.5% min: -1.2% max: 0.1%
syn-check
avg: -0.6% min: -1.2% max: -0.1%
issue-46449-opt
avg: -0.4% min: -1.2% max: -0.1%
parser-check
avg: -0.7% min: -1.2% max: 0.1%
issue-46449
avg: -0.5% min: -1.2% max: -0.0%
bors added a commit that referenced this pull request
Rollup of 18 pull requests
Successful merges:
- #49423 (Extend tests for RFC1598 (GAT))
- #50010 (Give SliceIndex impls a test suite of girth befitting the implementation (and fix a UTF8 boundary check))
- #50447 (Fix update-references for tests within subdirectories.)
- #50514 (Pull in a wasm fix from LLVM upstream)
- #50524 (Make DepGraph::previous_work_products immutable)
- #50532 (Don't use Lock for heavily accessed CrateMetadata::cnum_map.)
- #50538 ( Make CrateNum allocation more thread-safe. )
- #50564 (Inline
Span
methods.) - #50565 (Use SmallVec for DepNodeIndex within dep_graph.)
- #50569 (Allow for specifying a linker plugin for cross-language LTO)
- #50572 (Clarify in the docs that
mul_add
is not always faster.) - #50574 (add fn
into_inner(self) -> (Idx, Idx)
to RangeInclusive (#49022)) - #50575 (std: Avoid
ptr::copy
if unnecessary invec::Drain
) - #50588 (Move "See also" disambiguation links for primitive types to top)
- #50590 (Fix tuple struct field spans)
- #50591 (Restore RawVec::reserve* documentation)
- #50598 (Remove unnecessary mutable borrow and resizing in DepGraph::serialize)
- #50606 (Retry when downloading the Docker cache.)
Failed merges:
Marwes pushed a commit to Marwes/rust that referenced this pull request
…small
reserve_and_rehash
takes up 1.4% of the runtime on the packed-simd
benchmark which I believe is due to the number of reads are very low in
many cases (see rust-lang#50565 for
instance).
This avoids allocating the set until we start allocating the reads
SmallVec
but it is possible that a lower limit might be better (not
tested since the improvement will be hard to spot either way).
bors added a commit that referenced this pull request
perf(dep_graph): Avoid allocating a set on when the number reads are …
…small
reserve_and_rehash
takes up 1.4% of the runtime on the packed-simd
benchmark which I believe is due to the number of reads are very low in
many cases (see #50565 for
instance).
This avoids allocating the set until we start allocating the reads
SmallVec
but it is possible that a lower limit might be better (not
tested since the improvement will be hard to spot either way).
bors added a commit to rust-lang-ci/rust that referenced this pull request
perf(dep_graph): Avoid allocating a set on when the number reads are …
…small
reserve_and_rehash
takes up 1.4% of the runtime on the packed-simd
benchmark which I believe is due to the number of reads are very low in
many cases (see rust-lang#50565 for
instance).
This avoids allocating the set until we start allocating the reads
SmallVec
but it is possible that a lower limit might be better (not
tested since the improvement will be hard to spot either way).
Labels
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.