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