1
Fork 0

Auto merge of #137354 - FractalFir:intern_with_cap, r=FractalFir

Change interners to start preallocated with an increased capacity

Inspired by https://github.com/rust-lang/rust/issues/137005.

Added a `with_capacity` function to `InternedSet`. Changed the `CtxtInterners` to start with `InternedSets` preallocated with a capacity.

This *does* increase memory usage at very slightly(by ~1 MB at the start), altough that increase quickly disaperars for larger crates(since they require such capacity anyway).

A local perf run indicates this improves compiletimes for small crates(like `ripgrep`), without a negative effect on larger ones.
This commit is contained in:
bors 2025-02-26 13:01:45 +00:00
commit ac91805f31
2 changed files with 33 additions and 24 deletions

View file

@ -143,6 +143,9 @@ pub fn shards() -> usize {
pub type ShardedHashMap<K, V> = Sharded<FxHashMap<K, V>>;
impl<K: Eq, V> ShardedHashMap<K, V> {
pub fn with_capacity(cap: usize) -> Self {
Self::new(|| FxHashMap::with_capacity_and_hasher(cap, rustc_hash::FxBuildHasher::default()))
}
pub fn len(&self) -> usize {
self.lock_shards().map(|shard| shard.len()).sum()
}