]> git.lizzy.rs Git - rust.git/commitdiff
Calculate the exact capacity for 2 HashMaps
authorljedrz <ljedrz@gmail.com>
Mon, 16 Jul 2018 14:01:29 +0000 (16:01 +0200)
committerljedrz <ljedrz@gmail.com>
Mon, 16 Jul 2018 16:38:33 +0000 (18:38 +0200)
src/bootstrap/metadata.rs
src/librustc_driver/profile/trace.rs

index 718a6da363724b0bef268d91fa6df1b7d13130c6..fa0b1983510b90075b44b6ff0175a5cf58ada47a 100644 (file)
@@ -51,7 +51,7 @@ pub fn build(build: &mut Build) {
     build_krate("", build, &mut resolves, "src/libtest");
     build_krate(&build.rustc_features(), build, &mut resolves, "src/rustc");
 
-    let mut id2name = HashMap::new();
+    let mut id2name = HashMap::with_capacity(build.crates.len());
     for (name, krate) in build.crates.iter() {
         id2name.insert(krate.id.clone(), name.clone());
     }
index 6426286ccbc6c3bfb7a0ac2dc5c7176ef9aa2855..5f10c56e8e214cd5f287cd7050a8b54fab2d8a9b 100644 (file)
@@ -220,7 +220,8 @@ pub fn write_counts(count_file: &mut File, counts: &mut HashMap<String,QueryMetr
 }
 
 pub fn write_traces(html_file: &mut File, counts_file: &mut File, traces: &Vec<Rec>) {
-    let mut counts : HashMap<String,QueryMetric> = HashMap::new();
+    let capacity = traces.iter().fold(0, |acc, t| acc + 1 + t.extent.len());
+    let mut counts : HashMap<String, QueryMetric> = HashMap::with_capacity(capacity);
     compute_counts_rec(&mut counts, traces);
     write_counts(counts_file, &mut counts);