Skip to content

Commit

Permalink
fix(es/minifier): Preserve delete of unresolved variables (#7072)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7045.
  • Loading branch information
kdy1 committed Mar 15, 2023
1 parent 769ebaf commit 86295ba
Show file tree
Hide file tree
Showing 22 changed files with 60 additions and 36 deletions.
Expand Up @@ -5,6 +5,8 @@ var obj = {
baz: "qux",
quux: "quuz"
};
obj.foo, delete _object_without_properties(obj, [
obj.foo;
var rest = _object_without_properties(obj, [
"foo"
]).baz;
]);
delete rest.baz;
19 changes: 12 additions & 7 deletions crates/swc_ecma_minifier/src/compress/optimize/sequences.rs
Expand Up @@ -1487,13 +1487,18 @@ where
)
};

if b.is_lit()
|| b.is_class()
|| b.is_fn_expr()
|| b.is_arrow()
|| b.is_await_expr()
|| b.is_yield_expr()
{
if match &*b {
Expr::Arrow(..)
| Expr::Fn(..)
| Expr::Class(..)
| Expr::Lit(..)
| Expr::Await(..)
| Expr::Yield(..) => true,
Expr::Unary(UnaryExpr {
op: op!("delete"), ..
}) => true,
_ => false,
} {
return Ok(false);
}

Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_minifier/src/compress/pure/bools.rs
Expand Up @@ -222,7 +222,7 @@ impl Pure<'_> {

e if is_pure_undefined(&self.expr_ctx, e) => true,

Expr::Ident(..) => true,
Expr::Ident(i) => i.span.ctxt != self.expr_ctx.unresolved_ctxt,

// NaN
Expr::Bin(BinExpr {
Expand Down
3 changes: 2 additions & 1 deletion crates/swc_ecma_minifier/tests/benches-full/echarts.js
Expand Up @@ -3911,7 +3911,8 @@
for(var roots = this.storage.getRoots(), i = 0; i < roots.length; i++)roots[i] instanceof Group && roots[i].removeSelfFromZr(this);
this.storage.delAllRoots(), this.painter.clear();
}, ZRender.prototype.dispose = function() {
this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, delete instances[this.id];
var id;
this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, id = this.id, delete instances[id];
}, ZRender;
}();
function init(dom, opts) {
Expand Down
4 changes: 3 additions & 1 deletion crates/swc_ecma_minifier/tests/benches-full/three.js
Expand Up @@ -13072,7 +13072,9 @@
var actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;
lastInactiveAction._cacheIndex = cacheIndex, actions[cacheIndex] = lastInactiveAction, actions.pop(), action._cacheIndex = null;
var clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;
lastKnownAction._byClipCacheIndex = byClipCacheIndex, knownActionsForClip[byClipCacheIndex] = lastKnownAction, knownActionsForClip.pop(), action._byClipCacheIndex = null, delete actionsForClip.actionByRoot[(action._localRoot || this._root).uuid], 0 === knownActionsForClip.length && delete actionsByClip[clipUuid], this._removeInactiveBindingsForAction(action);
lastKnownAction._byClipCacheIndex = byClipCacheIndex, knownActionsForClip[byClipCacheIndex] = lastKnownAction, knownActionsForClip.pop(), action._byClipCacheIndex = null;
var actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;
delete actionByRoot[rootUuid], 0 === knownActionsForClip.length && delete actionsByClip[clipUuid], this._removeInactiveBindingsForAction(action);
},
_removeInactiveBindingsForAction: function(action) {
for(var bindings = action._propertyBindings, i = 0, n = bindings.length; i !== n; ++i){
Expand Down
3 changes: 3 additions & 0 deletions crates/swc_ecma_minifier/tests/fixture/issues/7045/input.js
@@ -0,0 +1,3 @@
a = 1;
delete a;
console.log(typeof a);
@@ -0,0 +1 @@
a = 1, delete a, console.log(typeof a);
Expand Up @@ -5734,7 +5734,10 @@
}
}, this.removeMarker = function(markerId) {
var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];
marker && (delete (marker.inFront ? this.$frontMarkers : this.$backMarkers)[markerId], this._signal(marker.inFront ? "changeFrontMarker" : "changeBackMarker"));
if (marker) {
var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;
delete markers[markerId], this._signal(marker.inFront ? "changeFrontMarker" : "changeBackMarker");
}
}, this.getMarkers = function(inFront) {
return inFront ? this.$frontMarkers : this.$backMarkers;
}, this.highlight = function(re) {
Expand Down
Expand Up @@ -7859,7 +7859,10 @@
if (this.directivekeys) {
var changedProps = [], directiveValue = this.validateChildren({}, this.directivekeys, props || this.props);
if (directiveValue && Object.keys(directiveValue).length) {
if (!silent && this.skipRefresh) for(var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++)delete directiveValue[_b[_a]];
if (!silent && this.skipRefresh) for(var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++){
var fields = _b[_a];
delete directiveValue[fields];
}
if (this.prevProperties) for(var dKeys = Object.keys(this.prevProperties), i = 0; i < dKeys.length; i++){
var key = dKeys[i];
if (directiveValue.hasOwnProperty(key)) {
Expand Down
Expand Up @@ -35,8 +35,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -35,8 +35,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -67,8 +67,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -35,8 +35,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -35,8 +35,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -146,8 +146,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -35,8 +35,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down
Expand Up @@ -35,8 +35,8 @@
};
if (dynamicOptions instanceof Promise ? loadableOptions1.loader = function() {
return dynamicOptions;
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && delete (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated)).loadableGenerated, "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, delete (loadableOptions = loadableOptions1).webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
} : "function" == typeof dynamicOptions ? loadableOptions1.loader = dynamicOptions : "object" == typeof dynamicOptions && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), dynamicOptions)), (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), options)).loadableGenerated && (loadableOptions1 = _objectSpread(_objectSpread({}, loadableOptions1), loadableOptions1.loadableGenerated), delete loadableOptions1.loadableGenerated), "boolean" == typeof loadableOptions1.ssr) {
if (!loadableOptions1.ssr) return delete loadableOptions1.ssr, loadableOptions = loadableOptions1, delete loadableOptions.webpack, delete loadableOptions.modules, loadableFn(loadableOptions);
delete loadableOptions1.ssr;
}
return loadableFn(loadableOptions1);
Expand Down

1 comment on commit 86295ba

@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: 86295ba Previous: 963c460 Ratio
es/full/bugs-1 296417 ns/iter (± 5638) 305859 ns/iter (± 6972) 0.97
es/full/minify/libraries/antd 1713571478 ns/iter (± 19488758) 1584921714 ns/iter (± 36068009) 1.08
es/full/minify/libraries/d3 316847681 ns/iter (± 7325369) 304458720 ns/iter (± 11192146) 1.04
es/full/minify/libraries/echarts 1311229778 ns/iter (± 15575991) 1199955677 ns/iter (± 19968311) 1.09
es/full/minify/libraries/jquery 93111350 ns/iter (± 570161) 90994786 ns/iter (± 649425) 1.02
es/full/minify/libraries/lodash 108340640 ns/iter (± 852797) 105872757 ns/iter (± 1253396) 1.02
es/full/minify/libraries/moment 53420456 ns/iter (± 180250) 51934089 ns/iter (± 298141) 1.03
es/full/minify/libraries/react 19364564 ns/iter (± 107930) 18868786 ns/iter (± 90144) 1.03
es/full/minify/libraries/terser 262605706 ns/iter (± 2836053) 238343056 ns/iter (± 2096746) 1.10
es/full/minify/libraries/three 461661141 ns/iter (± 4355136) 423519115 ns/iter (± 5145109) 1.09
es/full/minify/libraries/typescript 3144164833 ns/iter (± 15327376) 2917200606 ns/iter (± 19464861) 1.08
es/full/minify/libraries/victory 705146169 ns/iter (± 11228710) 638362882 ns/iter (± 10634609) 1.10
es/full/minify/libraries/vue 134198215 ns/iter (± 784588) 129357661 ns/iter (± 1458394) 1.04
es/full/codegen/es3 26082 ns/iter (± 39) 26133 ns/iter (± 86) 1.00
es/full/codegen/es5 26131 ns/iter (± 39) 26300 ns/iter (± 278) 0.99
es/full/codegen/es2015 26181 ns/iter (± 52) 26217 ns/iter (± 79) 1.00
es/full/codegen/es2016 26114 ns/iter (± 66) 26299 ns/iter (± 45) 0.99
es/full/codegen/es2017 26108 ns/iter (± 48) 26286 ns/iter (± 71) 0.99
es/full/codegen/es2018 26141 ns/iter (± 50) 26240 ns/iter (± 89) 1.00
es/full/codegen/es2019 26180 ns/iter (± 81) 26271 ns/iter (± 47) 1.00
es/full/codegen/es2020 26133 ns/iter (± 50) 26348 ns/iter (± 160) 0.99
es/full/all/es3 179369909 ns/iter (± 1932683) 179611905 ns/iter (± 2005255) 1.00
es/full/all/es5 170799497 ns/iter (± 2636398) 171605438 ns/iter (± 2798867) 1.00
es/full/all/es2015 132206480 ns/iter (± 1859328) 135077689 ns/iter (± 1995604) 0.98
es/full/all/es2016 131618113 ns/iter (± 1872543) 132002686 ns/iter (± 1482020) 1.00
es/full/all/es2017 129509212 ns/iter (± 1879237) 130743950 ns/iter (± 2695202) 0.99
es/full/all/es2018 124266637 ns/iter (± 1300882) 127101629 ns/iter (± 1718466) 0.98
es/full/all/es2019 123361543 ns/iter (± 1631032) 124871688 ns/iter (± 1695689) 0.99
es/full/all/es2020 116879757 ns/iter (± 944770) 117537488 ns/iter (± 504524) 0.99
es/full/parser 526107 ns/iter (± 7792) 537251 ns/iter (± 7200) 0.98
es/full/base/fixer 22539 ns/iter (± 54) 23695 ns/iter (± 52) 0.95
es/full/base/resolver_and_hygiene 81359 ns/iter (± 115) 82269 ns/iter (± 132) 0.99
serialization of ast node 124 ns/iter (± 0) 124 ns/iter (± 0) 1
serialization of serde 126 ns/iter (± 0) 126 ns/iter (± 0) 1
css/minify/libraries/bootstrap 28255519 ns/iter (± 80898) 28455518 ns/iter (± 150549) 0.99
css/visitor/compare/clone 2103100 ns/iter (± 7338) 2072322 ns/iter (± 11918) 1.01
css/visitor/compare/visit_mut_span 2291168 ns/iter (± 10288) 2291930 ns/iter (± 7203) 1.00
css/visitor/compare/visit_mut_span_panic 2308415 ns/iter (± 5609) 2321971 ns/iter (± 7465) 0.99
css/visitor/compare/fold_span 3034638 ns/iter (± 13412) 3070424 ns/iter (± 21742) 0.99
css/visitor/compare/fold_span_panic 3161495 ns/iter (± 24191) 3214785 ns/iter (± 19703) 0.98
css/lexer/bootstrap_5_1_3 5186743 ns/iter (± 5223) 5155322 ns/iter (± 45825) 1.01
css/lexer/foundation_6_7_4 4350605 ns/iter (± 1019) 4336664 ns/iter (± 7085) 1.00
css/lexer/tailwind_3_1_1 824098 ns/iter (± 241) 823936 ns/iter (± 864) 1.00
css/parser/bootstrap_5_1_3 22136546 ns/iter (± 154942) 21968768 ns/iter (± 127699) 1.01
css/parser/foundation_6_7_4 17608540 ns/iter (± 132009) 17423764 ns/iter (± 59439) 1.01
css/parser/tailwind_3_1_1 3327318 ns/iter (± 2367) 3327450 ns/iter (± 9630) 1.00
es/codegen/colors 325675 ns/iter (± 183179) 333997 ns/iter (± 188896) 0.98
es/codegen/large 2465159 ns/iter (± 1629702) 1238633 ns/iter (± 635289) 1.99
es/codegen/with-parser/colors 48352 ns/iter (± 289) 48215 ns/iter (± 595) 1.00
es/codegen/with-parser/large 525482 ns/iter (± 1240) 520844 ns/iter (± 1128) 1.01
es/minify/libraries/antd 1453177168 ns/iter (± 15883149) 1403179076 ns/iter (± 19736574) 1.04
es/minify/libraries/d3 268700136 ns/iter (± 2306399) 262575634 ns/iter (± 4954328) 1.02
es/minify/libraries/echarts 1137912196 ns/iter (± 15324618) 1065303308 ns/iter (± 7997381) 1.07
es/minify/libraries/jquery 80504347 ns/iter (± 557875) 78253331 ns/iter (± 538264) 1.03
es/minify/libraries/lodash 96537168 ns/iter (± 1117888) 93413126 ns/iter (± 1181939) 1.03
es/minify/libraries/moment 46522933 ns/iter (± 411424) 45382243 ns/iter (± 362472) 1.03
es/minify/libraries/react 17203583 ns/iter (± 110076) 17016296 ns/iter (± 78818) 1.01
es/minify/libraries/terser 221199832 ns/iter (± 2008440) 209528113 ns/iter (± 2452410) 1.06
es/minify/libraries/three 388628891 ns/iter (± 4308328) 365467349 ns/iter (± 6931867) 1.06
es/minify/libraries/typescript 2697637501 ns/iter (± 15188166) 2516807609 ns/iter (± 16685876) 1.07
es/minify/libraries/victory 621049381 ns/iter (± 14200337) 550392332 ns/iter (± 9993982) 1.13
es/minify/libraries/vue 119419309 ns/iter (± 1250457) 113504411 ns/iter (± 676057) 1.05
es/visitor/compare/clone 2347074 ns/iter (± 12205) 2357812 ns/iter (± 9725) 1.00
es/visitor/compare/visit_mut_span 2714023 ns/iter (± 3060) 2715280 ns/iter (± 5492) 1.00
es/visitor/compare/visit_mut_span_panic 2751196 ns/iter (± 5105) 2762326 ns/iter (± 11890) 1.00
es/visitor/compare/fold_span 3818655 ns/iter (± 106095) 3827024 ns/iter (± 6198) 1.00
es/visitor/compare/fold_span_panic 4009940 ns/iter (± 12829) 3984183 ns/iter (± 10313) 1.01
es/lexer/colors 15713 ns/iter (± 20) 15727 ns/iter (± 16) 1.00
es/lexer/angular 7738989 ns/iter (± 5272) 7668244 ns/iter (± 8260) 1.01
es/lexer/backbone 1000479 ns/iter (± 648) 991069 ns/iter (± 670) 1.01
es/lexer/jquery 5614251 ns/iter (± 2722) 5539499 ns/iter (± 4097) 1.01
es/lexer/jquery mobile 8660815 ns/iter (± 7665) 8554728 ns/iter (± 3000) 1.01
es/lexer/mootools 4432220 ns/iter (± 2215) 4395237 ns/iter (± 2280) 1.01
es/lexer/underscore 840416 ns/iter (± 390) 831867 ns/iter (± 4535) 1.01
es/lexer/three 26309872 ns/iter (± 11540) 26106354 ns/iter (± 31410) 1.01
es/lexer/yui 4756089 ns/iter (± 1385) 4711698 ns/iter (± 874) 1.01
es/parser/colors 30223 ns/iter (± 93) 29905 ns/iter (± 186) 1.01
es/parser/angular 16143300 ns/iter (± 161683) 15268563 ns/iter (± 120344) 1.06
es/parser/backbone 2233714 ns/iter (± 8161) 2224515 ns/iter (± 11275) 1.00
es/parser/jquery 12344413 ns/iter (± 116495) 12153372 ns/iter (± 106001) 1.02
es/parser/jquery mobile 19718176 ns/iter (± 165912) 19027116 ns/iter (± 267709) 1.04
es/parser/mootools 9316117 ns/iter (± 24865) 9232911 ns/iter (± 22247) 1.01
es/parser/underscore 1897406 ns/iter (± 8502) 1885674 ns/iter (± 10392) 1.01
es/parser/three 58356966 ns/iter (± 272396) 54832905 ns/iter (± 920020) 1.06
es/parser/yui 9436261 ns/iter (± 93433) 9353937 ns/iter (± 74163) 1.01
es/preset-env/usage/builtin_type 142038 ns/iter (± 34150) 143396 ns/iter (± 34501) 0.99
es/preset-env/usage/property 20996 ns/iter (± 89) 20601 ns/iter (± 78) 1.02
es/resolver/typescript 115002761 ns/iter (± 1270962) 107464800 ns/iter (± 3186985) 1.07
es/fixer/typescript 86408813 ns/iter (± 1916159) 80141242 ns/iter (± 1980998) 1.08
es/hygiene/typescript 188017024 ns/iter (± 1855382) 167618630 ns/iter (± 2510688) 1.12
es/resolver_with_hygiene/typescript 338451464 ns/iter (± 1557216) 309203230 ns/iter (± 1684491) 1.09
es/visitor/base-perf/module_clone 81224 ns/iter (± 811) 79534 ns/iter (± 1485) 1.02
es/visitor/base-perf/fold_empty 90590 ns/iter (± 1130) 89556 ns/iter (± 1623) 1.01
es/visitor/base-perf/fold_noop_impl_all 88806 ns/iter (± 1294) 90120 ns/iter (± 1284) 0.99
es/visitor/base-perf/fold_noop_impl_vec 89706 ns/iter (± 1735) 91612 ns/iter (± 1436) 0.98
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 57 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 53 ns/iter (± 0) 54 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_boxed 101 ns/iter (± 0) 102 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 97 ns/iter (± 0) 97 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 3404 ns/iter (± 53) 3443 ns/iter (± 40) 0.99
es/base/parallel/resolver/typescript 5715801062 ns/iter (± 470780398) 6037235092 ns/iter (± 414486662) 0.95
es/base/parallel/hygiene/typescript 2147564723 ns/iter (± 20458666) 1960767022 ns/iter (± 24372734) 1.10
misc/visitors/time-complexity/time 5 99 ns/iter (± 0) 99 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 343 ns/iter (± 3) 338 ns/iter (± 1) 1.01
misc/visitors/time-complexity/time 15 669 ns/iter (± 3) 669 ns/iter (± 3) 1
misc/visitors/time-complexity/time 20 1305 ns/iter (± 1) 1275 ns/iter (± 20) 1.02
misc/visitors/time-complexity/time 40 6746 ns/iter (± 2) 6749 ns/iter (± 8) 1.00
misc/visitors/time-complexity/time 60 17268 ns/iter (± 4) 17265 ns/iter (± 73) 1.00
es/full-target/es2016 249904 ns/iter (± 402) 249612 ns/iter (± 249) 1.00
es/full-target/es2017 243042 ns/iter (± 549) 242294 ns/iter (± 492) 1.00
es/full-target/es2018 231543 ns/iter (± 874) 231097 ns/iter (± 362) 1.00
es2020_nullish_coalescing 90926 ns/iter (± 513) 90716 ns/iter (± 146) 1.00
es2020_optional_chaining 123029 ns/iter (± 296) 123394 ns/iter (± 490) 1.00
es2022_class_properties 147112 ns/iter (± 257) 146968 ns/iter (± 236) 1.00
es2018_object_rest_spread 94848 ns/iter (± 323) 95260 ns/iter (± 200) 1.00
es2019_optional_catch_binding 84038 ns/iter (± 195) 84329 ns/iter (± 165) 1.00
es2017_async_to_generator 84840 ns/iter (± 145) 84799 ns/iter (± 185) 1.00
es2016_exponentiation 89235 ns/iter (± 246) 89591 ns/iter (± 197) 1.00
es2015_arrow 93149 ns/iter (± 196) 93195 ns/iter (± 285) 1.00
es2015_block_scoped_fn 90909 ns/iter (± 235) 90854 ns/iter (± 174) 1.00
es2015_block_scoping 168446 ns/iter (± 386) 168651 ns/iter (± 437) 1.00

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

Please sign in to comment.