Skip to content

Commit 276bdc2

Browse files
authored
perf: use fxhash (#23)
1 parent 9767eb9 commit 276bdc2

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ serde = { version = "1", features = ["derive"] }
2323
serde_json = "1"
2424
serde_with = { version = "3", features = ["indexmap_2"] }
2525
thiserror = "2"
26+
rustc-hash = "2"
2627

2728
[dev-dependencies]
2829
rstest = "0.25.0"

src/lib.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ mod util;
66
mod zip;
77

88
use std::{
9-
collections::{HashMap, HashSet, hash_map::Entry},
9+
collections::hash_map::Entry,
10+
hash::BuildHasherDefault,
1011
path::{Path, PathBuf},
1112
};
1213

1314
use fancy_regex::Regex;
1415
use indexmap::IndexMap;
1516
use lazy_static::lazy_static;
17+
use rustc_hash::{FxHashMap, FxHashSet, FxHasher};
1618
use serde::{Deserialize, Serialize};
1719
use serde_with::{DefaultOnNull, serde_as};
1820

@@ -68,7 +70,7 @@ pub struct PackageInformation {
6870
discard_from_lookup: bool,
6971

7072
#[serde_as(as = "Vec<(_, Option<_>)>")]
71-
package_dependencies: HashMap<String, Option<PackageDependency>>,
73+
package_dependencies: FxHashMap<String, Option<PackageDependency>>,
7274
}
7375

7476
#[serde_as]
@@ -91,21 +93,21 @@ pub struct Manifest {
9193
// "name": "@app/monorepo",
9294
// "workspace:."
9395
// }]
94-
dependency_tree_roots: HashSet<PackageLocator>,
96+
dependency_tree_roots: FxHashSet<PackageLocator>,
9597

9698
// fallbackPool: [[
9799
// "@app/monorepo",
98100
// "workspace:.",
99101
// ]]
100102
#[serde_as(as = "Vec<(_, _)>")]
101-
fallback_pool: HashMap<String, Option<PackageDependency>>,
103+
fallback_pool: FxHashMap<String, Option<PackageDependency>>,
102104

103105
// fallbackExclusionList: [[
104106
// "@app/server",
105107
// ["workspace:sources/server"],
106108
// ]]
107109
#[serde_as(as = "Vec<(_, _)>")]
108-
fallback_exclusion_list: HashMap<String, HashSet<String>>,
110+
fallback_exclusion_list: FxHashMap<String, FxHashSet<String>>,
109111

110112
// packageRegistryData: [
111113
// [null, [
@@ -115,7 +117,8 @@ pub struct Manifest {
115117
// }]
116118
// ]
117119
#[serde_as(as = "Vec<(DefaultOnNull<_>, Vec<(DefaultOnNull<_>, _)>)>")]
118-
package_registry_data: HashMap<String, IndexMap<String, PackageInformation>>,
120+
package_registry_data:
121+
FxHashMap<String, IndexMap<String, PackageInformation, BuildHasherDefault<FxHasher>>>,
119122
}
120123

121124
fn parse_scoped_package_name(specifier: &str) -> Option<(String, Option<String>)> {

0 commit comments

Comments
 (0)