Skip to content

Commit

Permalink
fix(es/renamer): Remove FastJsWord (#9136)
Browse files Browse the repository at this point in the history
**Description:**

Actually it was slower.

```
Starting recording with the Time Profiler template. Launching process: full-4ec72b7d24d0fcd8.
Ctrl-C to stop the recording
Gnuplot not found, using plotters backend
Benchmarking es/minify/libraries/antd
Benchmarking es/minify/libraries/antd: Warming up for 3.0000 s


Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 5.2s.
Benchmarking es/minify/libraries/antd: Collecting 10 samples in estimated 5.1501 s (10 iterations)
Benchmarking es/minify/libraries/antd: Analyzing
es/minify/libraries/antd
                        time:   [517.09 ms 521.65 ms 527.04 ms]
                        change: [-5.0960% -4.1320% -3.0084%] (p = 0.00 < 0.05)
                        Performance has improved.
Benchmarking es/minify/libraries/d3
Benchmarking es/minify/libraries/d3: Warming up for 3.0000 s

Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 7.3s or enable flat sampling.
Benchmarking es/minify/libraries/d3: Collecting 10 samples in estimated 7.3000 s (55 iterations)
Benchmarking es/minify/libraries/d3: Analyzing
es/minify/libraries/d3  time:   [132.42 ms 132.66 ms 132.93 ms]
                        change: [-5.0809% -4.6687% -4.2423%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
Benchmarking es/minify/libraries/echarts
Benchmarking es/minify/libraries/echarts: Warming up for 3.0000 s
Benchmarking es/minify/libraries/echarts: Collecting 10 samples in estimated 8.8664 s (20 iterations)
Benchmarking es/minify/libraries/echarts: Analyzing
es/minify/libraries/echarts
                        time:   [441.89 ms 442.98 ms 444.21 ms]
                        change: [-5.8436% -5.4580% -5.0604%] (p = 0.00 < 0.05)
                        Performance has improved.
Benchmarking es/minify/libraries/jquery
Benchmarking es/minify/libraries/jquery: Warming up for 3.0000 s
Benchmarking es/minify/libraries/jquery: Collecting 10 samples in estimated 7.2124 s (165 iterations)
Benchmarking es/minify/libraries/jquery: Analyzing
es/minify/libraries/jquery
                        time:   [43.549 ms 43.624 ms 43.703 ms]
                        change: [-3.3699% -3.0686% -2.7597%] (p = 0.00 < 0.05)
                        Performance has improved.
Benchmarking es/minify/libraries/lodash
Benchmarking es/minify/libraries/lodash: Warming up for 3.0000 s
Benchmarking es/minify/libraries/lodash: Collecting 10 samples in estimated 6.5048 s (110 iterations)
Benchmarking es/minify/libraries/lodash: Analyzing
es/minify/libraries/lodash
                        time:   [58.951 ms 59.114 ms 59.290 ms]
                        change: [-1.2723% -0.7019% -0.0217%] (p = 0.06 > 0.05)
                        No change in performance detected.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
Benchmarking es/minify/libraries/moment
Benchmarking es/minify/libraries/moment: Warming up for 3.0000 s
Benchmarking es/minify/libraries/moment: Collecting 10 samples in estimated 5.5497 s (220 iterations)
Benchmarking es/minify/libraries/moment: Analyzing
es/minify/libraries/moment
                        time:   [25.261 ms 25.313 ms 25.355 ms]
                        change: [-1.4771% -0.9851% -0.5957%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Benchmarking es/minify/libraries/react
Benchmarking es/minify/libraries/react: Warming up for 3.0000 s
Benchmarking es/minify/libraries/react: Collecting 10 samples in estimated 5.1132 s (605 iterations)
Benchmarking es/minify/libraries/react: Analyzing
es/minify/libraries/react
                        time:   [8.4265 ms 8.4431 ms 8.4624 ms]
                        change: [-1.3741% -1.0134% -0.6710%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high mild
Benchmarking es/minify/libraries/terser
Benchmarking es/minify/libraries/terser: Warming up for 3.0000 s

Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 5.6s or enable flat sampling.
Benchmarking es/minify/libraries/terser: Collecting 10 samples in estimated 5.5614 s (55 iterations)
Benchmarking es/minify/libraries/terser: Analyzing
es/minify/libraries/terser
                        time:   [100.87 ms 100.98 ms 101.15 ms]
                        change: [-6.7656% -6.1477% -5.4618%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
Benchmarking es/minify/libraries/three
Benchmarking es/minify/libraries/three: Warming up for 3.0000 s

Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 9.3s or enable flat sampling.
Benchmarking es/minify/libraries/three: Collecting 10 samples in estimated 9.3499 s (55 iterations)
Benchmarking es/minify/libraries/three: Analyzing
es/minify/libraries/three
                        time:   [170.12 ms 170.44 ms 170.81 ms]
                        change: [-6.9164% -6.4564% -5.9450%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 1 outliers among 10 measurements (10.00%)
  1 (10.00%) high severe
Benchmarking es/minify/libraries/typescript
Benchmarking es/minify/libraries/typescript: Warming up for 3.0000 s

Warning: Unable to complete 10 samples in 5.0s. You may wish to increase target time to 9.3s.
Benchmarking es/minify/libraries/typescript: Collecting 10 samples in estimated 9.2642 s (10 iterations)
Benchmarking es/minify/libraries/typescript: Analyzing
es/minify/libraries/typescript
                        time:   [927.57 ms 929.26 ms 930.85 ms]
                        change: [-4.4792% -4.1803% -3.9000%] (p = 0.00 < 0.05)
                        Performance has improved.
Benchmarking es/minify/libraries/victory
Benchmarking es/minify/libraries/victory: Warming up for 3.0000 s
Benchmarking es/minify/libraries/victory: Collecting 10 samples in estimated 7.0301 s (30 iterations)
Benchmarking es/minify/libraries/victory: Analyzing
es/minify/libraries/victory
                        time:   [233.98 ms 234.44 ms 234.96 ms]
                        change: [-7.2681% -6.7396% -6.2554%] (p = 0.00 < 0.05)
                        Performance has improved.
Benchmarking es/minify/libraries/vue
Benchmarking es/minify/libraries/vue: Warming up for 3.0000 s
Benchmarking es/minify/libraries/vue: Collecting 10 samples in estimated 6.7241 s (110 iterations)
Benchmarking es/minify/libraries/vue: Analyzing
es/minify/libraries/vue time:   [61.051 ms 61.124 ms 61.225 ms]
                        change: [-2.3890% -2.1697% -1.9536%] (p = 0.00 < 0.05)
                        Performance has improved.
```


**Related issue:**

 - Closes #9126
  • Loading branch information
kdy1 committed Jul 5, 2024
1 parent f70e071 commit 42b4caf
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 70 deletions.
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
use rustc_hash::FxHashMap;

use super::scope::{FastId, FastJsWord};
use swc_atoms::Atom;
use swc_ecma_ast::Id;

#[derive(Debug, Default)]
pub(crate) struct ReverseMap<'a> {
prev: Option<&'a ReverseMap<'a>>,

inner: FxHashMap<FastJsWord, Vec<FastId>>,
inner: FxHashMap<Atom, Vec<Id>>,
}

impl ReverseMap<'_> {
pub fn push_entry(&mut self, key: FastJsWord, id: FastId) {
pub fn push_entry(&mut self, key: Atom, id: Id) {
self.inner.entry(key).or_default().push(id);
}

fn iter(&self) -> Iter {
Iter { cur: Some(self) }
}

pub fn get<'a>(&'a self, key: &'a FastJsWord) -> impl Iterator<Item = &'a FastId> + 'a {
pub fn get<'a>(&'a self, key: &'a Atom) -> impl Iterator<Item = &'a Id> + 'a {
self.iter()
.filter_map(|v| v.inner.get(key))
.flat_map(|v| v.iter())
Expand Down
80 changes: 18 additions & 62 deletions crates/swc_ecma_transforms_base/src/rename/analyzer/scope.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use std::{
#[cfg(feature = "concurrent-renamer")]
use rayon::prelude::*;
use rustc_hash::FxHashSet;
use swc_atoms::JsWord;
use swc_atoms::Atom;
use swc_common::{collections::AHashMap, util::take::Take, Mark, SyntaxContext};
use swc_ecma_ast::*;
use tracing::debug;
Expand Down Expand Up @@ -36,38 +36,7 @@ pub(crate) struct Scope {
pub(super) children: Vec<Scope>,
}

/// [JsWord] without clone or drop. This is unsafe and creator should ensure
/// that [JsWord] stored in this type is not dropped until all operations are
/// finished.
#[repr(transparent)]
#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub(crate) struct FastJsWord(ManuallyDrop<JsWord>);

impl Clone for FastJsWord {
fn clone(&self) -> Self {
unsafe { Self(ManuallyDrop::new(transmute_copy(&self.0))) }
}
}

impl Display for FastJsWord {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
Display::fmt(&*self.0, f)
}
}

impl FastJsWord {
pub fn new(src: JsWord) -> Self {
FastJsWord(ManuallyDrop::new(src))
}

pub fn into_inner(self) -> JsWord {
ManuallyDrop::into_inner(self.0)
}
}

pub(crate) type FastId = (FastJsWord, SyntaxContext);

pub(crate) type RenameMap = AHashMap<FastId, JsWord>;
pub(crate) type RenameMap = AHashMap<Id, Atom>;

#[derive(Debug, Default)]
pub(super) struct ScopeData {
Expand All @@ -77,7 +46,7 @@ pub(super) struct ScopeData {
///
/// If the add-only contraint is violated, it is very likely to be a bug,
/// because we merge every items in children to current scope.
all: FxHashSet<FastId>,
all: FxHashSet<Id>,

queue: Vec<Id>,
}
Expand All @@ -88,9 +57,7 @@ impl Scope {
return;
}

let fid = fast_id(id.clone());

self.data.all.insert(fid);
self.data.all.insert(id.clone());

if !self.data.queue.contains(id) {
if has_eval && id.1.outer().is_descendant_of(top_level_mark) {
Expand All @@ -106,7 +73,7 @@ impl Scope {
return;
}

self.data.all.insert(fast_id(id));
self.data.all.insert(id);
}

/// Copy `children.data.all` to `self.data.all`.
Expand All @@ -124,7 +91,7 @@ impl Scope {
to: &mut RenameMap,
previous: &RenameMap,
reverse: &mut ReverseMap,
preserved_symbols: &FxHashSet<JsWord>,
preserved_symbols: &FxHashSet<Atom>,
) where
R: Renamer,
{
Expand Down Expand Up @@ -159,15 +126,14 @@ impl Scope {
previous: &RenameMap,
reverse: &mut ReverseMap,
queue: Vec<Id>,
preserved_symbols: &FxHashSet<JsWord>,
preserved_symbols: &FxHashSet<Atom>,
) where
R: Renamer,
{
let mut n = 0;

for id in queue {
let fid = fast_id(id.clone());
if to.get(&fid).is_some() || previous.get(&fid).is_some() || id.0 == "eval" {
if to.get(&id).is_some() || previous.get(&id).is_some() || id.0 == "eval" {
continue;
}

Expand All @@ -181,29 +147,27 @@ impl Scope {
if preserved_symbols.contains(&sym) {
continue;
}
let sym = FastJsWord::new(sym);

if self.can_rename(&id, &sym, reverse) {
if cfg!(debug_assertions) {
debug!("Renaming `{}{:?}` to `{}`", id.0, id.1, sym);
}

let fid = fast_id(id);
reverse.push_entry(sym.clone(), fid.clone());
to.insert(fid, sym.into_inner());
reverse.push_entry(sym.clone(), id.clone());
to.insert(id, sym);

break;
}
}
}
}

fn can_rename(&self, id: &Id, symbol: &FastJsWord, reverse: &ReverseMap) -> bool {
fn can_rename(&self, id: &Id, symbol: &Atom, reverse: &ReverseMap) -> bool {
// We can optimize this
// We only need to check the current scope and parents (ignoring `a` generated
// for unrelated scopes)
for left in reverse.get(symbol) {
if left.1 == id.1 && *left.0 .0 == id.0 {
if left.1 == id.1 && *left.0 == id.0 {
continue;
}

Expand All @@ -223,7 +187,7 @@ impl Scope {
previous: &RenameMap,
reverse: &ReverseMap,
preserved: &FxHashSet<Id>,
preserved_symbols: &FxHashSet<JsWord>,
preserved_symbols: &FxHashSet<Atom>,
parallel: bool,
) where
R: Renamer,
Expand Down Expand Up @@ -294,17 +258,16 @@ impl Scope {
reverse: &mut ReverseMap,
queue: Vec<Id>,
preserved: &FxHashSet<Id>,
preserved_symbols: &FxHashSet<JsWord>,
preserved_symbols: &FxHashSet<Atom>,
) where
R: Renamer,
{
let mut n = 0;

for id in queue {
let fid = fast_id(id.clone());
if preserved.contains(&id)
|| to.get(&fid).is_some()
|| previous.get(&fid).is_some()
|| to.get(&id).is_some()
|| previous.get(&id).is_some()
|| id.0 == "eval"
{
continue;
Expand All @@ -318,17 +281,14 @@ impl Scope {
continue;
}

let sym = FastJsWord::new(sym);

if self.can_rename(&id, &sym, reverse) {
#[cfg(debug_assertions)]
{
debug!("mangle: `{}{:?}` -> {}", id.0, id.1, sym);
}

let fid = fast_id(id.clone());
reverse.push_entry(sym.clone(), fid.clone());
to.insert(fid.clone(), sym.into_inner());
reverse.push_entry(sym.clone(), id.clone());
to.insert(id.clone(), sym);
// self.data.decls.remove(&id);
// self.data.usages.remove(&id);

Expand All @@ -343,7 +303,3 @@ impl Scope {
self.data.queue.len() + children.iter().map(|v| v.rename_cost()).sum::<usize>()
}
}

fn fast_id(id: Id) -> FastId {
(FastJsWord::new(id.0), id.1)
}
4 changes: 1 addition & 3 deletions crates/swc_ecma_transforms_base/src/rename/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,7 @@ where
);
}

map.into_iter()
.map(|((s, ctxt), v)| ((s.into_inner(), ctxt), v))
.collect()
map
}
}

Expand Down

1 comment on commit 42b4caf

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 42b4caf Previous: 8a3ae44 Ratio
es/full/bugs-1 274496 ns/iter (± 2666) 275104 ns/iter (± 12640) 1.00
es/full/minify/libraries/antd 1817395568 ns/iter (± 53548023) 1665521153 ns/iter (± 29656344) 1.09
es/full/minify/libraries/d3 343266882 ns/iter (± 6273328) 338344728 ns/iter (± 810671) 1.01
es/full/minify/libraries/echarts 1565421886 ns/iter (± 33029260) 1400422668 ns/iter (± 12728175) 1.12
es/full/minify/libraries/jquery 103758849 ns/iter (± 204664) 102830680 ns/iter (± 167229) 1.01
es/full/minify/libraries/lodash 114874487 ns/iter (± 518618) 113656974 ns/iter (± 213346) 1.01
es/full/minify/libraries/moment 60093957 ns/iter (± 202499) 59464580 ns/iter (± 71621) 1.01
es/full/minify/libraries/react 18474274 ns/iter (± 98496) 18413288 ns/iter (± 31153) 1.00
es/full/minify/libraries/terser 296141760 ns/iter (± 4047646) 273900410 ns/iter (± 703685) 1.08
es/full/minify/libraries/three 543450972 ns/iter (± 15636503) 462502493 ns/iter (± 2343483) 1.18
es/full/minify/libraries/typescript 3456995996 ns/iter (± 52274956) 3130810850 ns/iter (± 24505929) 1.10
es/full/minify/libraries/victory 892735037 ns/iter (± 26511136) 706110545 ns/iter (± 3407934) 1.26
es/full/minify/libraries/vue 150401165 ns/iter (± 1376340) 145623520 ns/iter (± 214429) 1.03
es/full/codegen/es3 59717 ns/iter (± 261) 58400 ns/iter (± 120) 1.02
es/full/codegen/es5 59326 ns/iter (± 830) 58481 ns/iter (± 219) 1.01
es/full/codegen/es2015 59477 ns/iter (± 312) 58502 ns/iter (± 142) 1.02
es/full/codegen/es2016 59424 ns/iter (± 83) 58755 ns/iter (± 144) 1.01
es/full/codegen/es2017 59253 ns/iter (± 156) 58584 ns/iter (± 129) 1.01
es/full/codegen/es2018 59519 ns/iter (± 221) 58652 ns/iter (± 214) 1.01
es/full/codegen/es2019 59420 ns/iter (± 179) 58530 ns/iter (± 124) 1.02
es/full/codegen/es2020 59405 ns/iter (± 252) 59096 ns/iter (± 83) 1.01
es/full/all/es3 161834659 ns/iter (± 468828) 160617920 ns/iter (± 630118) 1.01
es/full/all/es5 156428213 ns/iter (± 1399639) 155274739 ns/iter (± 603144) 1.01
es/full/all/es2015 115449284 ns/iter (± 548840) 115234450 ns/iter (± 853597) 1.00
es/full/all/es2016 114220407 ns/iter (± 571007) 114097912 ns/iter (± 484003) 1.00
es/full/all/es2017 113185760 ns/iter (± 662036) 113686841 ns/iter (± 464711) 1.00
es/full/all/es2018 111658966 ns/iter (± 1208878) 111416090 ns/iter (± 351732) 1.00
es/full/all/es2019 111102001 ns/iter (± 580054) 110678576 ns/iter (± 451217) 1.00
es/full/all/es2020 106875315 ns/iter (± 828383) 106812132 ns/iter (± 318200) 1.00
es/full/parser 460211 ns/iter (± 2610) 459166 ns/iter (± 2566) 1.00
es/full/base/fixer 16517 ns/iter (± 219) 15243 ns/iter (± 118) 1.08
es/full/base/resolver_and_hygiene 79013 ns/iter (± 240) 80051 ns/iter (± 228) 0.99
serialization of serde 277 ns/iter (± 6) 270 ns/iter (± 7) 1.03
css/minify/libraries/bootstrap 21767702 ns/iter (± 138062) 21724176 ns/iter (± 22306) 1.00
css/visitor/compare/clone 1361524 ns/iter (± 8698) 1376564 ns/iter (± 16215) 0.99
css/visitor/compare/visit_mut_span 1469549 ns/iter (± 6478) 1491512 ns/iter (± 6166) 0.99
css/visitor/compare/visit_mut_span_panic 1493003 ns/iter (± 18089) 1508773 ns/iter (± 27227) 0.99
css/visitor/compare/fold_span 1987588 ns/iter (± 3948) 2015850 ns/iter (± 17160) 0.99
css/visitor/compare/fold_span_panic 2141664 ns/iter (± 8358) 2155141 ns/iter (± 32705) 0.99
css/lexer/bootstrap_5_1_3 3507476 ns/iter (± 26327) 3494528 ns/iter (± 27412) 1.00
css/lexer/foundation_6_7_4 2819803 ns/iter (± 1841) 2816034 ns/iter (± 6588) 1.00
css/lexer/tailwind_3_1_1 538607 ns/iter (± 478) 539221 ns/iter (± 12267) 1.00
css/parser/bootstrap_5_1_3 16190476 ns/iter (± 29830) 16776848 ns/iter (± 114477) 0.97
css/parser/foundation_6_7_4 13147701 ns/iter (± 26026) 13418304 ns/iter (± 70200) 0.98
css/parser/tailwind_3_1_1 2621664 ns/iter (± 4163) 2550123 ns/iter (± 3480) 1.03
es/codegen/colors 728708 ns/iter (± 398732) 719769 ns/iter (± 396957) 1.01
es/codegen/large 2897984 ns/iter (± 1586581) 2989910 ns/iter (± 1611763) 0.97
es/codegen/with-parser/colors 43565 ns/iter (± 744) 40597 ns/iter (± 1387) 1.07
es/codegen/with-parser/large 482209 ns/iter (± 2461) 453283 ns/iter (± 9197) 1.06
es/minify/libraries/antd 1459734509 ns/iter (± 17159249) 1475266131 ns/iter (± 29014351) 0.99
es/minify/libraries/d3 287316736 ns/iter (± 3113721) 308412803 ns/iter (± 19790212) 0.93
es/minify/libraries/echarts 1227637900 ns/iter (± 13746611) 1309257430 ns/iter (± 67850496) 0.94
es/minify/libraries/jquery 82904584 ns/iter (± 106232) 83428740 ns/iter (± 299840) 0.99
es/minify/libraries/lodash 105344694 ns/iter (± 319628) 104260551 ns/iter (± 379749) 1.01
es/minify/libraries/moment 48529817 ns/iter (± 102175) 48422493 ns/iter (± 87253) 1.00
es/minify/libraries/react 16314144 ns/iter (± 18968) 16340711 ns/iter (± 23694) 1.00
es/minify/libraries/terser 225803151 ns/iter (± 1559947) 221283380 ns/iter (± 2774302) 1.02
es/minify/libraries/three 378679907 ns/iter (± 2849302) 377713372 ns/iter (± 7851115) 1.00
es/minify/libraries/typescript 2804617497 ns/iter (± 19473258) 2797941299 ns/iter (± 25104984) 1.00
es/minify/libraries/victory 605066641 ns/iter (± 9196189) 641582833 ns/iter (± 22276939) 0.94
es/minify/libraries/vue 122396893 ns/iter (± 683329) 122821887 ns/iter (± 367424) 1.00
es/visitor/compare/clone 1729107 ns/iter (± 4952) 1712491 ns/iter (± 6740) 1.01
es/visitor/compare/visit_mut_span 2076432 ns/iter (± 25678) 2058216 ns/iter (± 8742) 1.01
es/visitor/compare/visit_mut_span_panic 2061056 ns/iter (± 48254) 2082179 ns/iter (± 47107) 0.99
es/visitor/compare/fold_span 2789331 ns/iter (± 8331) 2781853 ns/iter (± 11245) 1.00
es/visitor/compare/fold_span_panic 2807808 ns/iter (± 3833) 2836900 ns/iter (± 7937) 0.99
es/lexer/colors 9887 ns/iter (± 78) 9693 ns/iter (± 67) 1.02
es/lexer/angular 5214886 ns/iter (± 10176) 5024759 ns/iter (± 23040) 1.04
es/lexer/backbone 668400 ns/iter (± 7242) 621418 ns/iter (± 981) 1.08
es/lexer/jquery 3510104 ns/iter (± 6613) 3673385 ns/iter (± 6886) 0.96
es/lexer/jquery mobile 5299855 ns/iter (± 77700) 5245335 ns/iter (± 21104) 1.01
es/lexer/mootools 2858150 ns/iter (± 3629) 2768390 ns/iter (± 29065) 1.03
es/lexer/underscore 528124 ns/iter (± 774) 516594 ns/iter (± 2799) 1.02
es/lexer/three 15992778 ns/iter (± 66921) 15841594 ns/iter (± 155704) 1.01
es/lexer/yui 3062752 ns/iter (± 27159) 2917211 ns/iter (± 5718) 1.05
es/lexer/cal-com 13525063 ns/iter (± 36629) 13137311 ns/iter (± 174559) 1.03
es/lexer/typescript 93395779 ns/iter (± 962331) 91260247 ns/iter (± 520538) 1.02
es/parser/colors 23688 ns/iter (± 96) 23900 ns/iter (± 151) 0.99
es/parser/angular 13505085 ns/iter (± 283886) 12640039 ns/iter (± 75317) 1.07
es/parser/backbone 1818494 ns/iter (± 9254) 1821723 ns/iter (± 6299) 1.00
es/parser/jquery 10182993 ns/iter (± 157712) 10027751 ns/iter (± 87455) 1.02
es/parser/jquery mobile 15579525 ns/iter (± 162930) 15222741 ns/iter (± 110535) 1.02
es/parser/mootools 7834130 ns/iter (± 27134) 7777221 ns/iter (± 17964) 1.01
es/parser/underscore 1589127 ns/iter (± 4167) 1581962 ns/iter (± 4793) 1.00
es/parser/three 45553019 ns/iter (± 291109) 45307678 ns/iter (± 311858) 1.01
es/parser/yui 7480586 ns/iter (± 76102) 7473482 ns/iter (± 32817) 1.00
es/parser/cal-com 41938084 ns/iter (± 429465) 42758465 ns/iter (± 595797) 0.98
es/parser/typescript 274252923 ns/iter (± 1230458) 270867110 ns/iter (± 1213605) 1.01
es/preset-env/usage/builtin_type 136937 ns/iter (± 33922) 137646 ns/iter (± 33938) 0.99
es/preset-env/usage/property 17449 ns/iter (± 133) 16715 ns/iter (± 92) 1.04
es/resolver/typescript 100510044 ns/iter (± 2281661) 99393894 ns/iter (± 1579483) 1.01
es/fixer/typescript 82583395 ns/iter (± 2112319) 79644669 ns/iter (± 4535999) 1.04
es/hygiene/typescript 187589099 ns/iter (± 2954928) 178774317 ns/iter (± 2871772) 1.05
es/resolver_with_hygiene/typescript 306891032 ns/iter (± 2298298) 303785732 ns/iter (± 6252098) 1.01
es/visitor/base-perf/module_clone 56686 ns/iter (± 1542) 56569 ns/iter (± 446) 1.00
es/visitor/base-perf/fold_empty 59797 ns/iter (± 285) 60270 ns/iter (± 866) 0.99
es/visitor/base-perf/fold_noop_impl_all 59774 ns/iter (± 1973) 60389 ns/iter (± 616) 0.99
es/visitor/base-perf/fold_noop_impl_vec 60319 ns/iter (± 1503) 60538 ns/iter (± 1475) 1.00
es/visitor/base-perf/boxing_boxed_clone 60 ns/iter (± 0) 59 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 47 ns/iter (± 0) 47 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 105 ns/iter (± 1) 1
es/visitor/base-perf/boxing_unboxed 80 ns/iter (± 0) 80 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 2617 ns/iter (± 13) 2576 ns/iter (± 25) 1.02
es/base/parallel/resolver/typescript 2664808534 ns/iter (± 120201890) 2441844367 ns/iter (± 50486408) 1.09
es/base/parallel/hygiene/typescript 3270059232 ns/iter (± 27350423) 3154111650 ns/iter (± 54744328) 1.04
babelify-only 490835 ns/iter (± 5791) 489834 ns/iter (± 11137) 1.00
parse_and_babelify_angular 44521143 ns/iter (± 560966) 43578335 ns/iter (± 2551126) 1.02
parse_and_babelify_backbone 4381091 ns/iter (± 238383) 4382326 ns/iter (± 144889) 1.00
parse_and_babelify_jquery 29047787 ns/iter (± 261911) 28239315 ns/iter (± 170572) 1.03
parse_and_babelify_jquery_mobile 50739894 ns/iter (± 703478) 48600198 ns/iter (± 541787) 1.04
parse_and_babelify_mootools 26222996 ns/iter (± 321868) 25558410 ns/iter (± 600861) 1.03
parse_and_babelify_underscore 3685228 ns/iter (± 15585) 3692445 ns/iter (± 23064) 1.00
parse_and_babelify_yui 24335300 ns/iter (± 343606) 24075597 ns/iter (± 571870) 1.01
html/minify/document/css_spec 45776146 ns/iter (± 146366) 45927114 ns/iter (± 92281) 1.00
html/minify/document/github 18423584 ns/iter (± 237759) 18433453 ns/iter (± 947791) 1.00
html/minify/document/stackoverflow 16525991 ns/iter (± 498895) 16732582 ns/iter (± 896529) 0.99
html/minify/document_fragment/css_spec 45100293 ns/iter (± 172401) 44837014 ns/iter (± 105949) 1.01
html/minify/document_fragment/github 18212283 ns/iter (± 30485) 18092733 ns/iter (± 20061) 1.01
html/minify/document_fragment/stackoverflow 16465736 ns/iter (± 382198) 16413760 ns/iter (± 22170) 1.00
html/document/visitor/compare/clone 167919 ns/iter (± 2144) 165941 ns/iter (± 3029) 1.01
html/document/visitor/compare/visit_mut_span 183664 ns/iter (± 730) 182482 ns/iter (± 818) 1.01
html/document/visitor/compare/visit_mut_span_panic 187966 ns/iter (± 1564) 190657 ns/iter (± 4258) 0.99
html/document/visitor/compare/fold_span 230315 ns/iter (± 1580) 232507 ns/iter (± 757) 0.99
html/document/visitor/compare/fold_span_panic 282410 ns/iter (± 1498) 283659 ns/iter (± 2922) 1.00
html/document_fragment/visitor/compare/clone 167960 ns/iter (± 2355) 166287 ns/iter (± 1029) 1.01
html/document_fragment/visitor/compare/visit_mut_span 182420 ns/iter (± 1151) 181698 ns/iter (± 877) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 187486 ns/iter (± 851) 188802 ns/iter (± 1490) 0.99
html/document_fragment/visitor/compare/fold_span 229893 ns/iter (± 486) 233997 ns/iter (± 1602) 0.98
html/document_fragment/visitor/compare/fold_span_panic 280291 ns/iter (± 2691) 283912 ns/iter (± 1791) 0.99
html/lexer/css_2021_spec 12885015 ns/iter (± 86871) 12821453 ns/iter (± 300793) 1.00
html/lexer/github_com_17_05_2022 4953146 ns/iter (± 21076) 4934977 ns/iter (± 13059) 1.00
html/lexer/stackoverflow_com_17_05_2022 4717467 ns/iter (± 49934) 4664479 ns/iter (± 270882) 1.01
html/parser/parser_document/css_2021_spec 25410398 ns/iter (± 406890) 25788274 ns/iter (± 160041) 0.99
html/parser/parser_document/github_com_17_05_2022 8482884 ns/iter (± 297778) 8522270 ns/iter (± 28093) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7435318 ns/iter (± 9841) 7458872 ns/iter (± 9798) 1.00
html/parser/parser_document_fragment/css_2021_spec 25135158 ns/iter (± 134654) 25463161 ns/iter (± 153706) 0.99
html/parser/parser_document_fragment/github_com_17_05_2022 8420023 ns/iter (± 16549) 8492372 ns/iter (± 24856) 0.99
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7419514 ns/iter (± 26153) 7452926 ns/iter (± 21024) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.