From d5d856cf3b7c89da4d917cb1acea4fdb3096769b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Mon, 13 Jan 2025 15:04:16 +0900 Subject: [PATCH] perf(es/minifier): Adjust parallel threshold (#9872) **Description:** I profiled each one each time by using `--save-baseline` and `--baseline`, and selected the options that produces the best result. --- .changeset/tasty-mugs-sniff.md | 7 +++++++ crates/swc_ecma_minifier/src/compress/pure/mod.rs | 2 +- crates/swc_ecma_minifier/src/pass/precompress.rs | 14 +++++++------- .../src/simplify/branch/mod.rs | 12 ++++++------ .../src/simplify/dce/mod.rs | 12 ++++++------ 5 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 .changeset/tasty-mugs-sniff.md diff --git a/.changeset/tasty-mugs-sniff.md b/.changeset/tasty-mugs-sniff.md new file mode 100644 index 000000000000..e355bf3bf1b9 --- /dev/null +++ b/.changeset/tasty-mugs-sniff.md @@ -0,0 +1,7 @@ +--- +swc_ecma_minifier: minor +swc_core: minor +swc_ecma_transforms_optimization: minor +--- + +perf(es/minifier): Make `Finalizer` more parallel diff --git a/crates/swc_ecma_minifier/src/compress/pure/mod.rs b/crates/swc_ecma_minifier/src/compress/pure/mod.rs index 8411537576b3..133c1b826a04 100644 --- a/crates/swc_ecma_minifier/src/compress/pure/mod.rs +++ b/crates/swc_ecma_minifier/src/compress/pure/mod.rs @@ -184,7 +184,7 @@ impl Pure<'_> { where N: for<'aa> VisitMutWith> + Send + Sync, { - self.maybe_par(cpu_count(), nodes, |v, node| { + self.maybe_par(cpu_count() * 8, nodes, |v, node| { node.visit_mut_with(v); }); } diff --git a/crates/swc_ecma_minifier/src/pass/precompress.rs b/crates/swc_ecma_minifier/src/pass/precompress.rs index ba80636534b1..57037a2fce12 100644 --- a/crates/swc_ecma_minifier/src/pass/precompress.rs +++ b/crates/swc_ecma_minifier/src/pass/precompress.rs @@ -6,7 +6,7 @@ use swc_ecma_transforms_base::perf::{Parallel, ParallelExt}; use swc_ecma_utils::{ExprCtx, ExprExt, Value::Known}; use swc_ecma_visit::{noop_visit_mut_type, VisitMut, VisitMutWith}; -use crate::CPU_COUNT; +use crate::HEAVY_TASK_PARALLELS; /// Optimizer invoked before invoking compressor. /// @@ -60,37 +60,37 @@ impl VisitMut for PrecompressOptimizer { } fn visit_mut_stmts(&mut self, n: &mut Vec) { - self.maybe_par(*CPU_COUNT, n, |v, n| { + self.maybe_par(*HEAVY_TASK_PARALLELS, n, |v, n| { n.visit_mut_with(v); }); } fn visit_mut_module_items(&mut self, n: &mut Vec) { - self.maybe_par(*CPU_COUNT, n, |v, n| { + self.maybe_par(*HEAVY_TASK_PARALLELS, n, |v, n| { n.visit_mut_with(v); }); } fn visit_mut_exprs(&mut self, n: &mut Vec>) { - self.maybe_par(*CPU_COUNT, n, |v, n| { + self.maybe_par(*HEAVY_TASK_PARALLELS, n, |v, n| { n.visit_mut_with(v); }); } fn visit_mut_opt_vec_expr_or_spreads(&mut self, n: &mut Vec>) { - self.maybe_par(*CPU_COUNT, n, |v, n| { + self.maybe_par(*HEAVY_TASK_PARALLELS, n, |v, n| { n.visit_mut_with(v); }); } fn visit_mut_expr_or_spreads(&mut self, n: &mut Vec) { - self.maybe_par(*CPU_COUNT, n, |v, n| { + self.maybe_par(*HEAVY_TASK_PARALLELS, n, |v, n| { n.visit_mut_with(v); }); } fn visit_mut_var_declarators(&mut self, n: &mut Vec) { - self.maybe_par(*CPU_COUNT, n, |v, n| { + self.maybe_par(*HEAVY_TASK_PARALLELS, n, |v, n| { n.visit_mut_with(v); }); } diff --git a/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs b/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs index 4364cdb6007b..06a8acfcac7d 100644 --- a/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs +++ b/crates/swc_ecma_transforms_optimization/src/simplify/branch/mod.rs @@ -1219,31 +1219,31 @@ impl VisitMut for Remover { } fn visit_mut_prop_or_spreads(&mut self, n: &mut Vec) { - self.maybe_par(cpu_count(), n, |v, n| { + self.maybe_par(cpu_count() * 8, n, |v, n| { n.visit_mut_with(v); }) } fn visit_mut_expr_or_spreads(&mut self, n: &mut Vec) { - self.maybe_par(cpu_count(), n, |v, n| { + self.maybe_par(cpu_count() * 8, n, |v, n| { n.visit_mut_with(v); }) } fn visit_mut_opt_vec_expr_or_spreads(&mut self, n: &mut Vec>) { - self.maybe_par(cpu_count(), n, |v, n| { + self.maybe_par(cpu_count() * 8, n, |v, n| { n.visit_mut_with(v); }) } fn visit_mut_exprs(&mut self, n: &mut Vec>) { - self.maybe_par(cpu_count(), n, |v, n| { + self.maybe_par(cpu_count() * 8, n, |v, n| { n.visit_mut_with(v); }) } fn visit_mut_var_declarators(&mut self, n: &mut Vec) { - self.maybe_par(cpu_count(), n, |v, n| { + self.maybe_par(cpu_count() * 8, n, |v, n| { n.visit_mut_with(v); }) } @@ -1261,7 +1261,7 @@ impl Remover { let mut new_stmts = Vec::with_capacity(stmts.len()); - self.maybe_par(cpu_count(), &mut *stmts, |visitor, stmt| { + self.maybe_par(cpu_count() * 8, &mut *stmts, |visitor, stmt| { visitor.normal_block = true; stmt.visit_mut_with(visitor); }); diff --git a/crates/swc_ecma_transforms_optimization/src/simplify/dce/mod.rs b/crates/swc_ecma_transforms_optimization/src/simplify/dce/mod.rs index 832c7e2fc029..6c4e463b4e42 100644 --- a/crates/swc_ecma_transforms_optimization/src/simplify/dce/mod.rs +++ b/crates/swc_ecma_transforms_optimization/src/simplify/dce/mod.rs @@ -591,7 +591,7 @@ impl TreeShaker { } } - self.visit_mut_par(cpu_count(), stmts); + self.visit_mut_par(cpu_count() * 8, stmts); stmts.retain(|s| match s.as_stmt() { Some(Stmt::Empty(..)) => false, @@ -845,11 +845,11 @@ impl VisitMut for TreeShaker { } fn visit_mut_expr_or_spreads(&mut self, n: &mut Vec) { - self.visit_mut_par(cpu_count(), n); + self.visit_mut_par(cpu_count() * 8, n); } fn visit_mut_exprs(&mut self, n: &mut Vec>) { - self.visit_mut_par(cpu_count(), n); + self.visit_mut_par(cpu_count() * 8, n); } fn visit_mut_for_head(&mut self, n: &mut ForHead) { @@ -947,11 +947,11 @@ impl VisitMut for TreeShaker { } fn visit_mut_opt_vec_expr_or_spreads(&mut self, n: &mut Vec>) { - self.visit_mut_par(cpu_count(), n); + self.visit_mut_par(cpu_count() * 8, n); } fn visit_mut_prop_or_spreads(&mut self, n: &mut Vec) { - self.visit_mut_par(cpu_count(), n); + self.visit_mut_par(cpu_count() * 8, n); } fn visit_mut_script(&mut self, m: &mut Script) { @@ -1095,7 +1095,7 @@ impl VisitMut for TreeShaker { } fn visit_mut_var_declarators(&mut self, n: &mut Vec) { - self.visit_mut_par(cpu_count(), n); + self.visit_mut_par(cpu_count() * 8, n); n.retain(|v| { if v.name.is_invalid() {