Skip to content

Commit 8d0c5da

Browse files
authored
Rollup merge of #50174 - nnethercote:FxHashMap-Interner, r=michaelwoerister
Use FxHashMap in syntax_pos::symbol::Interner::intern. Because it's faster than HashMap. This change reduces the time taken for a few of the rustc-perf benchmarks, mostly the small ones, by up to 5%. ``` coercions avg: -1.3% min: -5.5% max: -0.0% helloworld-check avg: -2.3% min: -3.5% max: -1.8% deeply-nested-check avg: -1.4% min: -3.2% max: -0.5% tuple-stress-opt avg: -0.7% min: -2.0% max: -0.1% unify-linearly-check avg: -1.2% min: -1.9% max: -0.6% coercions-check avg: -0.8% min: -1.3% max: -0.4% unused-warnings-check avg: -1.0% min: -1.3% max: -0.8% deeply-nested-opt avg: -0.5% min: -1.2% max: -0.2% deeply-nested avg: -0.7% min: -1.2% max: -0.4% helloworld avg: -0.8% min: -1.1% max: -0.7% tuple-stress-check avg: -0.5% min: -1.0% max: -0.1% unused-warnings avg: -0.8% min: -1.0% max: -0.7% unused-warnings-opt avg: -0.8% min: -1.0% max: -0.7% coercions-opt avg: -0.5% min: -1.0% max: -0.1% helloworld-opt avg: -0.7% min: -1.0% max: -0.6% ```
2 parents 8545ecd + f7d4c97 commit 8d0c5da

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/libsyntax_pos/symbol.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
use hygiene::SyntaxContext;
1616
use {Span, DUMMY_SP, GLOBALS};
1717

18+
use rustc_data_structures::fx::FxHashMap;
1819
use serialize::{Decodable, Decoder, Encodable, Encoder};
19-
use std::collections::HashMap;
2020
use std::fmt;
2121
use std::hash::{Hash, Hasher};
2222

@@ -184,7 +184,7 @@ impl<T: ::std::ops::Deref<Target=str>> PartialEq<T> for Symbol {
184184

185185
#[derive(Default)]
186186
pub struct Interner {
187-
names: HashMap<Box<str>, Symbol>,
187+
names: FxHashMap<Box<str>, Symbol>,
188188
strings: Vec<Box<str>>,
189189
gensyms: Vec<Symbol>,
190190
}

0 commit comments

Comments
 (0)