perf(transformer): use FxDashMap for browser query cache (#7521)

Use `FxDashMap` instead of plain `DashMap` for browser query cache.

Inspired by https://github.com/rolldown/rolldown/pull/2971.
This commit is contained in:
overlookmotel 2024-11-28 11:39:14 +00:00
parent 896ff860f9
commit 7ebe8c20e8

View file

@ -1,10 +1,13 @@
use std::sync::OnceLock; use std::sync::OnceLock;
use dashmap::DashMap; use dashmap::DashMap;
use rustc_hash::FxBuildHasher;
use serde::Deserialize; use serde::Deserialize;
use super::EngineTargets; use super::EngineTargets;
type FxDashMap<K, V> = DashMap<K, V, FxBuildHasher>;
#[derive(Debug, Clone, Deserialize, Eq, PartialEq, PartialOrd, Ord, Hash)] #[derive(Debug, Clone, Deserialize, Eq, PartialEq, PartialOrd, Ord, Hash)]
#[serde(untagged)] #[serde(untagged)]
pub enum BrowserslistQuery { pub enum BrowserslistQuery {
@ -12,9 +15,9 @@ pub enum BrowserslistQuery {
Multiple(Vec<String>), Multiple(Vec<String>),
} }
fn cache() -> &'static DashMap<BrowserslistQuery, EngineTargets> { fn cache() -> &'static FxDashMap<BrowserslistQuery, EngineTargets> {
static CACHE: OnceLock<DashMap<BrowserslistQuery, EngineTargets>> = OnceLock::new(); static CACHE: OnceLock<FxDashMap<BrowserslistQuery, EngineTargets>> = OnceLock::new();
CACHE.get_or_init(DashMap::new) CACHE.get_or_init(FxDashMap::default)
} }
impl BrowserslistQuery { impl BrowserslistQuery {