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 }})

nnethercote

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%

@nnethercote

This avoids a decent number of allocations, enough to speed up incremental runs of many rustc-benchmarks, the best by 2%.

@rust-highfive

r? @cramertj

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

@michaelwoerister

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.

@bors

📌 Commit 78262e7 has been approved by michaelwoerister

@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

May 9, 2018

alexcrichton added a commit to alexcrichton/rust that referenced this pull request

May 10, 2018

@alexcrichton

…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

May 10, 2018

@alexcrichton

…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

May 10, 2018

@bors

Rollup of 18 pull requests

Successful merges:

Failed merges:

Marwes pushed a commit to Marwes/rust that referenced this pull request

Mar 6, 2020

…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

Mar 6, 2020

@bors

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

Mar 22, 2020

@bors

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

S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.