From 7ebe8c20e80bcb09ec29082a8e5ebfd40daaf03e Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Thu, 28 Nov 2024 11:39:14 +0000 Subject: [PATCH] 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. --- crates/oxc_transformer/src/options/browserslist_query.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/crates/oxc_transformer/src/options/browserslist_query.rs b/crates/oxc_transformer/src/options/browserslist_query.rs index 84acb91de..1f988b290 100644 --- a/crates/oxc_transformer/src/options/browserslist_query.rs +++ b/crates/oxc_transformer/src/options/browserslist_query.rs @@ -1,10 +1,13 @@ use std::sync::OnceLock; use dashmap::DashMap; +use rustc_hash::FxBuildHasher; use serde::Deserialize; use super::EngineTargets; +type FxDashMap = DashMap; + #[derive(Debug, Clone, Deserialize, Eq, PartialEq, PartialOrd, Ord, Hash)] #[serde(untagged)] pub enum BrowserslistQuery { @@ -12,9 +15,9 @@ pub enum BrowserslistQuery { Multiple(Vec), } -fn cache() -> &'static DashMap { - static CACHE: OnceLock> = OnceLock::new(); - CACHE.get_or_init(DashMap::new) +fn cache() -> &'static FxDashMap { + static CACHE: OnceLock> = OnceLock::new(); + CACHE.get_or_init(FxDashMap::default) } impl BrowserslistQuery {