Skip to content

Commit 7fe01e6

Browse files
authoredAug 22, 2023
fix(es/minifier): Don't inline properties if the var is not fn-local (#7839)
**Related issue:** - vercel/next.js#54192.
1 parent 6a8ea89 commit 7fe01e6

28 files changed

+393
-30
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
function f() {
2-
return something.getFoos()?.[0];
2+
const foos = something.getFoos();
3+
return foos?.[0];
34
}

‎crates/swc/tests/tsc-references/destructuringVariableDeclaration1ES5.2.minified.js

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
//// [destructuringVariableDeclaration1ES5.ts]
22
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
33
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
4+
var _ref = {
5+
a1: 10,
6+
a2: "world"
7+
};
8+
_ref.a1, _ref.a2;
49
var tmp = {
510
b11: "world"
611
};

‎crates/swc/tests/tsc-references/destructuringVariableDeclaration1ES5iterable.2.minified.js

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
//// [destructuringVariableDeclaration1ES5iterable.ts]
22
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
33
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
4+
var _ref = {
5+
a1: 10,
6+
a2: "world"
7+
};
8+
_ref.a1, _ref.a2;
49
var tmp = {
510
b11: "world"
611
};
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
//// [logicalNotOperatorWithAnyOtherType.ts]
22
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
3-
var n, M, A = function() {
3+
var n, M, obj1 = {
4+
x: "",
5+
y: function() {}
6+
}, A = function() {
47
function A() {
58
_class_call_check(this, A);
69
}
710
return A.foo = function() {}, A;
811
}();
912
(M || (M = {})).n = n;
1013
var objA = new A();
11-
objA.a, M.n, A.foo(), objA.a, M.n;
14+
obj1.x, obj1.y, objA.a, M.n, A.foo(), objA.a, M.n;
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
//// [parserNotHexLiteral1.ts]
2-
console.info("dog"), console.info("cat");
2+
var x = {
3+
e0: "cat",
4+
x0: "dog"
5+
};
6+
console.info(x.x0), console.info(x.e0);
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
11
//// [typeTagOnPropertyAssignment.js]
2+
var o = {
3+
a: "a",
4+
n: function() {
5+
return "b";
6+
}
7+
};
8+
o.a, o.n;
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
11
//// [a.js]
2+
var sala = {
3+
name: "uppsala",
4+
not: 0,
5+
nested: "ok"
6+
};
7+
sala.name, sala.not, sala.nested;

‎crates/swc/tests/tsc-references/unannotatedParametersAreOptional.2.minified.js

+5
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,8 @@ var C = function() {
77
return C.prototype.m = function(x) {}, C.m = function(x) {}, C;
88
}();
99
C.m(), new C().m(), new C().p();
10+
var obj = {
11+
m: function(x) {},
12+
p: function(x) {}
13+
};
14+
obj.m(), obj.p();
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
//// [voidOperatorWithAnyOtherType.ts]
22
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
3-
var n, M, A = function() {
3+
var n, M, obj1 = {
4+
x: "",
5+
y: 1
6+
}, A = function() {
47
function A() {
58
_class_call_check(this, A);
69
}
710
return A.foo = function() {}, A;
811
}();
912
(M || (M = {})).n = n;
1013
var objA = new A();
11-
objA.a, M.n, A.foo(), objA.a, M.n;
14+
obj1.x, obj1.y, objA.a, M.n, A.foo(), objA.a, M.n;

‎crates/swc_ecma_minifier/src/compress/optimize/props.rs

+5
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ impl Optimizer<'_> {
3434
&& !v.used_as_ref
3535
&& !v.used_as_arg
3636
&& !v.used_in_cond
37+
&& (!v.is_fn_local || !self.mode.should_be_very_correct())
3738
&& !v.reassigned()
3839
&& !v.is_infected()
3940
})
@@ -84,6 +85,10 @@ impl Optimizer<'_> {
8485
}
8586
}
8687
}
88+
} else {
89+
if self.mode.should_be_very_correct() {
90+
return;
91+
}
8792
}
8893

8994
if !unknown_used_props.iter().all(|(_, v)| *v == 0) {

‎crates/swc_ecma_minifier/src/eval.rs

+4
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ impl Mode for Eval {
6666
fn force_str_for_tpl(&self) -> bool {
6767
true
6868
}
69+
70+
fn should_be_very_correct(&self) -> bool {
71+
false
72+
}
6973
}
7074

7175
impl Evaluator {

‎crates/swc_ecma_minifier/src/mode.rs

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ use swc_ecma_ast::*;
33
pub(crate) trait Mode: Send + Sync {
44
fn store(&self, id: Id, value: &Expr);
55

6+
fn should_be_very_correct(&self) -> bool;
7+
68
/// If this returns true, template literals with `\n` or `\r` will be
79
/// converted to [Lit::Str].
810
fn force_str_for_tpl(&self) -> bool;
@@ -16,4 +18,8 @@ impl Mode for Minification {
1618
fn force_str_for_tpl(&self) -> bool {
1719
false
1820
}
21+
22+
fn should_be_very_correct(&self) -> bool {
23+
true
24+
}
1925
}

‎crates/swc_ecma_minifier/tests/benches-full/echarts.js

+13-10
Original file line numberDiff line numberDiff line change
@@ -7773,8 +7773,8 @@
77737773
}
77747774
}
77757775
function format(time, template, isUTC, lang) {
7776-
var date = parseDate(time), y = date[fullYearGetterName(isUTC)](), M = date[monthGetterName(isUTC)]() + 1, q = Math.floor((M - 1) / 4) + 1, d = date[dateGetterName(isUTC)](), e = date['get' + (isUTC ? 'UTC' : '') + 'Day'](), H = date[hoursGetterName(isUTC)](), h = (H - 1) % 12 + 1, m = date[minutesGetterName(isUTC)](), s = date[secondsGetterName(isUTC)](), S = date[millisecondsGetterName(isUTC)](), timeModel = (lang instanceof Model ? lang : localeModels[lang || SYSTEM_LANG] || localeModels.EN).getModel('time');
7777-
return (template || '').replace(/{yyyy}/g, y + '').replace(/{yy}/g, y % 100 + '').replace(/{Q}/g, q + '').replace(/{MMMM}/g, timeModel.get('month')[M - 1]).replace(/{MMM}/g, timeModel.get('monthAbbr')[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + '').replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + '').replace(/{eeee}/g, timeModel.get('dayOfWeek')[e]).replace(/{ee}/g, timeModel.get('dayOfWeekAbbr')[e]).replace(/{e}/g, e + '').replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + '').replace(/{hh}/g, pad(h + '', 2)).replace(/{h}/g, h + '').replace(/{mm}/g, pad(m, 2)).replace(/{m}/g, m + '').replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + '').replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + '');
7776+
var date = parseDate(time), y = date[fullYearGetterName(isUTC)](), M = date[monthGetterName(isUTC)]() + 1, q = Math.floor((M - 1) / 4) + 1, d = date[dateGetterName(isUTC)](), e = date['get' + (isUTC ? 'UTC' : '') + 'Day'](), H = date[hoursGetterName(isUTC)](), h = (H - 1) % 12 + 1, m = date[minutesGetterName(isUTC)](), s = date[secondsGetterName(isUTC)](), S = date[millisecondsGetterName(isUTC)](), timeModel = (lang instanceof Model ? lang : localeModels[lang || SYSTEM_LANG] || localeModels.EN).getModel('time'), month = timeModel.get('month'), monthAbbr = timeModel.get('monthAbbr'), dayOfWeek = timeModel.get('dayOfWeek'), dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');
7777+
return (template || '').replace(/{yyyy}/g, y + '').replace(/{yy}/g, y % 100 + '').replace(/{Q}/g, q + '').replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + '').replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + '').replace(/{eeee}/g, dayOfWeek[e]).replace(/{ee}/g, dayOfWeekAbbr[e]).replace(/{e}/g, e + '').replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + '').replace(/{hh}/g, pad(h + '', 2)).replace(/{h}/g, h + '').replace(/{mm}/g, pad(m, 2)).replace(/{m}/g, m + '').replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + '').replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + '');
77787778
}
77797779
function getUnitFromValue(value, isUTC) {
77807780
var date = parseDate(value), M = date[monthGetterName(isUTC)]() + 1, d = date[dateGetterName(isUTC)](), h = date[hoursGetterName(isUTC)](), m = date[minutesGetterName(isUTC)](), s = date[secondsGetterName(isUTC)](), isSecond = 0 === date[millisecondsGetterName(isUTC)](), isMinute = isSecond && 0 === s, isHour = isMinute && 0 === m, isDay = isHour && 0 === h, isMonth = isDay && 1 === d;
@@ -14490,7 +14490,7 @@
1449014490
}, List.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) {
1449114491
for(var list = cloneListForMapAndSample(this, [
1449214492
dimension
14493-
]), frameValues = [], frameSize = mathFloor(1 / rate), dimStore = list._storage[dimension], len = this.count(), rawExtentOnDim = list._rawExtent[dimension], newIndices = new (getIndicesCtor(this))(len), offset = 0, i = 0; i < len; i += frameSize){
14493+
]), targetStorage = list._storage, frameValues = [], frameSize = mathFloor(1 / rate), dimStore = targetStorage[dimension], len = this.count(), rawExtentOnDim = list._rawExtent[dimension], newIndices = new (getIndicesCtor(this))(len), offset = 0, i = 0; i < len; i += frameSize){
1449414494
frameSize > len - i && (frameSize = len - i, frameValues.length = frameSize);
1449514495
for(var k = 0; k < frameSize; k++){
1449614496
var dataIdx = this.getRawIndex(i + k);
@@ -25061,7 +25061,7 @@
2506125061
getAutoCurvenessParams(this) && (this.__curvenessList = [], this.__edgeMap = {}, createCurveness(this));
2506225062
var graph = createGraphFromNodeEdge(nodes, edges, this, !0, function(nodeData, edgeData) {
2506325063
nodeData.wrapMethod('getItemModel', function(model) {
25064-
var categoryIdx = model.getShallow('category'), categoryModel = self1._categoriesModels[categoryIdx];
25064+
var categoryModel = self1._categoriesModels[model.getShallow('category')];
2506525065
return categoryModel && (categoryModel.parentModel = model.parentModel, model.parentModel = categoryModel), model;
2506625066
});
2506725067
var oldGetModel = Model.prototype.getModel;
@@ -29234,7 +29234,7 @@
2923429234
}), path;
2923529235
}
2923629236
function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {
29237-
var bundle = bar.__pictorialBundle, valueLineWidth = symbolMeta.valueLineWidth, pathPosition = symbolMeta.pathPosition, valueDim = opt.valueDim, repeatTimes = symbolMeta.repeatTimes || 0, index = 0, unit = symbolMeta.symbolSize[opt.valueDim.index] + valueLineWidth + 2 * symbolMeta.symbolMargin;
29237+
var bundle = bar.__pictorialBundle, symbolSize = symbolMeta.symbolSize, valueLineWidth = symbolMeta.valueLineWidth, pathPosition = symbolMeta.pathPosition, valueDim = opt.valueDim, repeatTimes = symbolMeta.repeatTimes || 0, index = 0, unit = symbolSize[opt.valueDim.index] + valueLineWidth + 2 * symbolMeta.symbolMargin;
2923829238
for(eachPath(bar, function(path) {
2923929239
path.__pictorialAnimationIndex = index, path.__pictorialRepeatTimes = repeatTimes, index < repeatTimes ? updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate) : updateAttr(path, null, {
2924029240
scaleX: 0,
@@ -29440,11 +29440,11 @@
2944029440
return _this.type = ThemeRiverView.type, _this._layers = [], _this;
2944129441
}
2944229442
return __extends(ThemeRiverView, _super), ThemeRiverView.prototype.render = function(seriesModel, ecModel, api) {
29443-
var data = seriesModel.getData(), self1 = this, group = this.group, layersSeries = seriesModel.getLayerSeries(), layoutInfo = data.getLayout('layoutInfo'), rect = layoutInfo.rect;
29443+
var data = seriesModel.getData(), self1 = this, group = this.group, layersSeries = seriesModel.getLayerSeries(), layoutInfo = data.getLayout('layoutInfo'), rect = layoutInfo.rect, boundaryGap = layoutInfo.boundaryGap;
2944429444
function keyGetter(item) {
2944529445
return item.name;
2944629446
}
29447-
group.x = 0, group.y = rect.y + layoutInfo.boundaryGap[0];
29447+
group.x = 0, group.y = rect.y + boundaryGap[0];
2944829448
var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter), newLayersGroups = [];
2944929449
function process(status, idx, oldIdx) {
2945029450
var style, polygon, oldLayersGroups = self1._layers;
@@ -38876,6 +38876,9 @@
3887638876
var otherShadowExtent = [
3887738877
0,
3887838878
size[1]
38879+
], thisShadowExtent = [
38880+
0,
38881+
size[0]
3887938882
], areaPoints = [
3888038883
[
3888138884
size[0],
@@ -38885,7 +38888,7 @@
3888538888
0,
3888638889
0
3888738890
]
38888-
], linePoints = [], step = size[0] / (data.count() - 1), thisCoord = 0, stride = Math.round(data.count() / size[0]);
38891+
], linePoints = [], step = thisShadowExtent[1] / (data.count() - 1), thisCoord = 0, stride = Math.round(data.count() / size[0]);
3888938892
data.each([
3889038893
otherDim
3889138894
], function(value, index) {
@@ -40049,11 +40052,11 @@
4004940052
var zr = this.api.getZr();
4005040053
this.visualMapModel.option.hoverLink ? (zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this), zr.on('mouseout', this._hideIndicator, this)) : this._clearHoverLinkFromSeries();
4005140054
}, ContinuousView.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) {
40052-
var visualMapModel = this.visualMapModel;
40055+
var visualMapModel = this.visualMapModel, itemSize = visualMapModel.itemSize;
4005340056
if (visualMapModel.option.hoverLink) {
4005440057
var halfHoverLinkSize, hoverLinkDataSize, sizeExtent = [
4005540058
0,
40056-
visualMapModel.itemSize[1]
40059+
itemSize[1]
4005740060
], dataExtent = visualMapModel.getExtent();
4005840061
cursorPos = mathMin$a(mathMax$a(sizeExtent[0], cursorPos), sizeExtent[1]);
4005940062
var halfHoverLinkSize1 = (halfHoverLinkSize = 6, (hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize')) && (halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, !0) / 2), halfHoverLinkSize), hoverRange = [

‎crates/swc_ecma_minifier/tests/benches-full/lodash.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1329,8 +1329,8 @@
13291329
}
13301330
function createCaseFirst(methodName) {
13311331
return function(string) {
1332-
var strSymbols = hasUnicode(string = toString(string)) ? stringToArray(string) : undefined, trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);
1333-
return (strSymbols ? strSymbols[0] : string.charAt(0))[methodName]() + trailing;
1332+
var strSymbols = hasUnicode(string = toString(string)) ? stringToArray(string) : undefined, chr = strSymbols ? strSymbols[0] : string.charAt(0), trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);
1333+
return chr[methodName]() + trailing;
13341334
};
13351335
}
13361336
function createCompounder(callback) {

‎crates/swc_ecma_minifier/tests/benches-full/three.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -13073,8 +13073,8 @@
1307313073
lastInactiveAction._cacheIndex = cacheIndex, actions[cacheIndex] = lastInactiveAction, actions.pop(), action._cacheIndex = null;
1307413074
var clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;
1307513075
lastKnownAction._byClipCacheIndex = byClipCacheIndex, knownActionsForClip[byClipCacheIndex] = lastKnownAction, knownActionsForClip.pop(), action._byClipCacheIndex = null;
13076-
var rootUuid = (action._localRoot || this._root).uuid;
13077-
delete actionsForClip.actionByRoot[rootUuid], 0 === knownActionsForClip.length && delete actionsByClip[clipUuid], this._removeInactiveBindingsForAction(action);
13076+
var actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;
13077+
delete actionByRoot[rootUuid], 0 === knownActionsForClip.length && delete actionsByClip[clipUuid], this._removeInactiveBindingsForAction(action);
1307813078
},
1307913079
_removeInactiveBindingsForAction: function(action) {
1308013080
for(var bindings = action._propertyBindings, i = 0, n = bindings.length; i !== n; ++i){

‎crates/swc_ecma_minifier/tests/benches-full/victory.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -6864,7 +6864,7 @@
68646864
for(var _i = 0, _n2 = hull.length; _i < _n2; ++_i)hullIndex[hull[_i]] = _i;
68656865
hull.length <= 2 && hull.length > 0 && (this.triangles = new Int32Array(3).fill(-1), this.halfedges = new Int32Array(3).fill(-1), this.triangles[0] = hull[0], this.triangles[1] = hull[1], this.triangles[2] = hull[1], inedges[hull[0]] = 1, 2 === hull.length && (inedges[hull[1]] = 0));
68666866
}, _proto.neighbors = function(i) {
6867-
var results = [], hull = this.hull, _hullIndex = this._hullIndex, halfedges = this.halfedges, triangles = this.triangles, e0 = this.inedges[i];
6867+
var results = [], inedges = this.inedges, hull = this.hull, _hullIndex = this._hullIndex, halfedges = this.halfedges, triangles = this.triangles, e0 = inedges[i];
68686868
if (-1 === e0) return results;
68696869
var e = e0, p0 = -1;
68706870
do {
@@ -6881,8 +6881,8 @@
68816881
for(var c, i0 = i; (c = this._step(i, x, y)) >= 0 && c !== i && c !== i0;)i = c;
68826882
return c;
68836883
}, _proto._step = function(i, x, y) {
6884-
var points = this.points;
6885-
if (-1 === this.inedges[i] || !points.length) return (i + 1) % (points.length >> 1);
6884+
var inedges = this.inedges, points = this.points;
6885+
if (-1 === inedges[i] || !points.length) return (i + 1) % (points.length >> 1);
68866886
for(var c = i, dc = Math.pow(x - points[2 * i], 2) + Math.pow(y - points[2 * i + 1], 2), _iterator = this.neighbors(i), _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;){
68876887
if (_isArray) {
68886888
if (_i2 >= _iterator.length) break;
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export function f() {
2-
return something.getFoos()?.[0];
2+
const foos = something.getFoos();
3+
return foos?.[0];
34
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export function createCaseFirst(g, methodName) {
2+
var chr = g.get(0)
3+
console.log(123)
4+
return chr[methodName]() + trailing;
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export function createCaseFirst(g, methodName) {
2+
var chr = g.get(0);
3+
return console.log(123), chr[methodName]() + trailing;
4+
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Aug 22, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 7fe01e6 Previous: f713f1b Ratio
es/full/bugs-1 294212 ns/iter (± 8000) 288248 ns/iter (± 6766) 1.02
es/full/minify/libraries/antd 1296898645 ns/iter (± 11410801) 1284305173 ns/iter (± 7284154) 1.01
es/full/minify/libraries/d3 273417040 ns/iter (± 3551161) 272155149 ns/iter (± 3467534) 1.00
es/full/minify/libraries/echarts 1046709560 ns/iter (± 8911545) 1029503819 ns/iter (± 10819324) 1.02
es/full/minify/libraries/jquery 82948561 ns/iter (± 224369) 82762382 ns/iter (± 63516) 1.00
es/full/minify/libraries/lodash 96299335 ns/iter (± 265960) 96109857 ns/iter (± 235891) 1.00
es/full/minify/libraries/moment 48985099 ns/iter (± 287707) 48917564 ns/iter (± 66811) 1.00
es/full/minify/libraries/react 17797262 ns/iter (± 125038) 17769138 ns/iter (± 40588) 1.00
es/full/minify/libraries/terser 214859999 ns/iter (± 1162531) 214093595 ns/iter (± 292194) 1.00
es/full/minify/libraries/three 382821712 ns/iter (± 1618402) 378671498 ns/iter (± 1921119) 1.01
es/full/minify/libraries/typescript 2620748461 ns/iter (± 9812722) 2600568186 ns/iter (± 13469813) 1.01
es/full/minify/libraries/victory 561219796 ns/iter (± 6698773) 552144412 ns/iter (± 5664247) 1.02
es/full/minify/libraries/vue 118143537 ns/iter (± 489191) 117577143 ns/iter (± 196804) 1.00
es/full/codegen/es3 34114 ns/iter (± 358) 34110 ns/iter (± 76) 1.00
es/full/codegen/es5 34341 ns/iter (± 190) 34098 ns/iter (± 90) 1.01
es/full/codegen/es2015 34473 ns/iter (± 194) 34039 ns/iter (± 63) 1.01
es/full/codegen/es2016 34151 ns/iter (± 312) 34126 ns/iter (± 92) 1.00
es/full/codegen/es2017 34251 ns/iter (± 293) 34007 ns/iter (± 82) 1.01
es/full/codegen/es2018 34281 ns/iter (± 309) 34151 ns/iter (± 103) 1.00
es/full/codegen/es2019 33930 ns/iter (± 262) 34216 ns/iter (± 139) 0.99
es/full/codegen/es2020 34440 ns/iter (± 223) 34043 ns/iter (± 99) 1.01
es/full/all/es3 167655646 ns/iter (± 786827) 166829261 ns/iter (± 870405) 1.00
es/full/all/es5 160164133 ns/iter (± 918341) 160172167 ns/iter (± 1641897) 1.00
es/full/all/es2015 119785959 ns/iter (± 778500) 119638582 ns/iter (± 633574) 1.00
es/full/all/es2016 119059575 ns/iter (± 613288) 118384474 ns/iter (± 755649) 1.01
es/full/all/es2017 117836556 ns/iter (± 624562) 117356155 ns/iter (± 428157) 1.00
es/full/all/es2018 116519138 ns/iter (± 304017) 115402677 ns/iter (± 637116) 1.01
es/full/all/es2019 115750168 ns/iter (± 843893) 114535529 ns/iter (± 849494) 1.01
es/full/all/es2020 110785823 ns/iter (± 689333) 110766964 ns/iter (± 751169) 1.00
es/full/parser 495653 ns/iter (± 7822) 493570 ns/iter (± 5839) 1.00
es/full/base/fixer 19243 ns/iter (± 207) 17994 ns/iter (± 168) 1.07
es/full/base/resolver_and_hygiene 78634 ns/iter (± 851) 80199 ns/iter (± 206) 0.98
serialization of serde 286 ns/iter (± 2) 300 ns/iter (± 3) 0.95
css/minify/libraries/bootstrap 29910979 ns/iter (± 143249) 28574074 ns/iter (± 66713) 1.05
css/visitor/compare/clone 1635405 ns/iter (± 4787) 1634124 ns/iter (± 4345) 1.00
css/visitor/compare/visit_mut_span 1766724 ns/iter (± 18600) 1758648 ns/iter (± 2027) 1.00
css/visitor/compare/visit_mut_span_panic 1839305 ns/iter (± 8294) 1827832 ns/iter (± 5625) 1.01
css/visitor/compare/fold_span 2549106 ns/iter (± 38299) 2596313 ns/iter (± 16907) 0.98
css/visitor/compare/fold_span_panic 2719241 ns/iter (± 43837) 2745610 ns/iter (± 18149) 0.99
css/lexer/bootstrap_5_1_3 4456874 ns/iter (± 47991) 4497025 ns/iter (± 11474) 0.99
css/lexer/foundation_6_7_4 3732053 ns/iter (± 58963) 3851538 ns/iter (± 10697) 0.97
css/lexer/tailwind_3_1_1 706547 ns/iter (± 6095) 731978 ns/iter (± 2896) 0.97
css/parser/bootstrap_5_1_3 19750948 ns/iter (± 276409) 18961604 ns/iter (± 28481) 1.04
css/parser/foundation_6_7_4 15524539 ns/iter (± 253139) 15109265 ns/iter (± 51768) 1.03
css/parser/tailwind_3_1_1 3036544 ns/iter (± 9303) 2918639 ns/iter (± 22637) 1.04
es/codegen/colors 739359 ns/iter (± 398189) 744292 ns/iter (± 405106) 0.99
es/codegen/large 2866425 ns/iter (± 1529136) 3110296 ns/iter (± 1659203) 0.92
es/codegen/with-parser/colors 44947 ns/iter (± 757) 44959 ns/iter (± 391) 1.00
es/codegen/with-parser/large 476401 ns/iter (± 6351) 483365 ns/iter (± 21626) 0.99
es/minify/libraries/antd 1135686278 ns/iter (± 15848612) 1128632308 ns/iter (± 10206206) 1.01
es/minify/libraries/d3 238613629 ns/iter (± 897475) 238504059 ns/iter (± 413427) 1.00
es/minify/libraries/echarts 898992482 ns/iter (± 6275247) 889162946 ns/iter (± 2961276) 1.01
es/minify/libraries/jquery 73251412 ns/iter (± 95836) 73016337 ns/iter (± 118089) 1.00
es/minify/libraries/lodash 86893047 ns/iter (± 336725) 86685646 ns/iter (± 233932) 1.00
es/minify/libraries/moment 43541292 ns/iter (± 71160) 43477129 ns/iter (± 59650) 1.00
es/minify/libraries/react 16010545 ns/iter (± 42540) 16024172 ns/iter (± 35639) 1.00
es/minify/libraries/terser 184763601 ns/iter (± 1006135) 184490473 ns/iter (± 445815) 1.00
es/minify/libraries/three 319808642 ns/iter (± 2723789) 319566488 ns/iter (± 925337) 1.00
es/minify/libraries/typescript 2241609023 ns/iter (± 16194970) 2205122345 ns/iter (± 10383273) 1.02
es/minify/libraries/victory 473443675 ns/iter (± 3949369) 465469361 ns/iter (± 1411206) 1.02
es/minify/libraries/vue 105688869 ns/iter (± 577603) 106059198 ns/iter (± 180330) 1.00
es/visitor/compare/clone 1950248 ns/iter (± 20062) 1951228 ns/iter (± 2245) 1.00
es/visitor/compare/visit_mut_span 2236353 ns/iter (± 20759) 2269529 ns/iter (± 25671) 0.99
es/visitor/compare/visit_mut_span_panic 2326221 ns/iter (± 17837) 2324915 ns/iter (± 10175) 1.00
es/visitor/compare/fold_span 3377129 ns/iter (± 35932) 3373279 ns/iter (± 5405) 1.00
es/visitor/compare/fold_span_panic 3412771 ns/iter (± 21913) 3501474 ns/iter (± 14236) 0.97
es/lexer/colors 13158 ns/iter (± 112) 12980 ns/iter (± 87) 1.01
es/lexer/angular 6081249 ns/iter (± 29676) 6109566 ns/iter (± 13595) 1.00
es/lexer/backbone 788979 ns/iter (± 4024) 788068 ns/iter (± 2669) 1.00
es/lexer/jquery 4469870 ns/iter (± 13810) 4490542 ns/iter (± 33577) 1.00
es/lexer/jquery mobile 6817204 ns/iter (± 25653) 6835292 ns/iter (± 13899) 1.00
es/lexer/mootools 3551063 ns/iter (± 10737) 3535743 ns/iter (± 17795) 1.00
es/lexer/underscore 656650 ns/iter (± 3593) 652702 ns/iter (± 5021) 1.01
es/lexer/three 21218473 ns/iter (± 75172) 21205175 ns/iter (± 39725) 1.00
es/lexer/yui 3777799 ns/iter (± 37574) 3804579 ns/iter (± 25513) 0.99
es/parser/colors 27899 ns/iter (± 181) 27160 ns/iter (± 101) 1.03
es/parser/angular 13310296 ns/iter (± 269509) 13465626 ns/iter (± 97380) 0.99
es/parser/backbone 1978196 ns/iter (± 12908) 1994719 ns/iter (± 12058) 0.99
es/parser/jquery 10752147 ns/iter (± 109271) 10908712 ns/iter (± 51713) 0.99
es/parser/jquery mobile 16647355 ns/iter (± 55127) 16703227 ns/iter (± 86506) 1.00
es/parser/mootools 8350519 ns/iter (± 45276) 8398667 ns/iter (± 47938) 0.99
es/parser/underscore 1728516 ns/iter (± 7888) 1727533 ns/iter (± 9501) 1.00
es/parser/three 46818386 ns/iter (± 285241) 46856753 ns/iter (± 296134) 1.00
es/parser/yui 8288141 ns/iter (± 25039) 8209107 ns/iter (± 89933) 1.01
es/preset-env/usage/builtin_type 139621 ns/iter (± 32697) 136643 ns/iter (± 32674) 1.02
es/preset-env/usage/property 16732 ns/iter (± 68) 16364 ns/iter (± 105) 1.02
es/resolver/typescript 90567891 ns/iter (± 987501) 87898306 ns/iter (± 778101) 1.03
es/fixer/typescript 62697345 ns/iter (± 429794) 62595748 ns/iter (± 650458) 1.00
es/hygiene/typescript 128395588 ns/iter (± 1005911) 127850871 ns/iter (± 695367) 1.00
es/resolver_with_hygiene/typescript 240537664 ns/iter (± 2320532) 235826748 ns/iter (± 1900140) 1.02
es/visitor/base-perf/module_clone 60231 ns/iter (± 1283) 59692 ns/iter (± 488) 1.01
es/visitor/base-perf/fold_empty 64888 ns/iter (± 711) 63781 ns/iter (± 449) 1.02
es/visitor/base-perf/fold_noop_impl_all 65284 ns/iter (± 458) 64172 ns/iter (± 435) 1.02
es/visitor/base-perf/fold_noop_impl_vec 65939 ns/iter (± 539) 64373 ns/iter (± 582) 1.02
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 39 ns/iter (± 0) 40 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_boxed 104 ns/iter (± 1) 111 ns/iter (± 1) 0.94
es/visitor/base-perf/boxing_unboxed 74 ns/iter (± 0) 79 ns/iter (± 1) 0.94
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2656 ns/iter (± 21) 2668 ns/iter (± 15) 1.00
es/base/parallel/resolver/typescript 4468437073 ns/iter (± 266764342) 3711749713 ns/iter (± 247675849) 1.20
es/base/parallel/hygiene/typescript 1441549699 ns/iter (± 13935527) 1436577374 ns/iter (± 13601764) 1.00
misc/visitors/time-complexity/time 5 132 ns/iter (± 1) 132 ns/iter (± 7) 1
misc/visitors/time-complexity/time 10 393 ns/iter (± 7) 381 ns/iter (± 1) 1.03
misc/visitors/time-complexity/time 15 679 ns/iter (± 8) 718 ns/iter (± 14) 0.95
misc/visitors/time-complexity/time 20 1053 ns/iter (± 48) 1031 ns/iter (± 68) 1.02
misc/visitors/time-complexity/time 40 3523 ns/iter (± 12) 3516 ns/iter (± 11) 1.00
misc/visitors/time-complexity/time 60 7264 ns/iter (± 39) 7321 ns/iter (± 33) 0.99
es/full-target/es2016 234383 ns/iter (± 1069) 235152 ns/iter (± 931) 1.00
es/full-target/es2017 222504 ns/iter (± 916) 223726 ns/iter (± 1292) 0.99
es/full-target/es2018 210752 ns/iter (± 363) 211665 ns/iter (± 784) 1.00
es2020_nullish_coalescing 72166 ns/iter (± 446) 71999 ns/iter (± 436) 1.00
es2020_optional_chaining 81096 ns/iter (± 1000) 82108 ns/iter (± 156) 0.99
es2022_class_properties 113712 ns/iter (± 789) 117147 ns/iter (± 453) 0.97
es2018_object_rest_spread 75531 ns/iter (± 483) 75859 ns/iter (± 265) 1.00
es2019_optional_catch_binding 65803 ns/iter (± 188) 65740 ns/iter (± 241) 1.00
es2017_async_to_generator 63547 ns/iter (± 436) 64624 ns/iter (± 116) 0.98
es2016_exponentiation 69073 ns/iter (± 236) 70238 ns/iter (± 496) 0.98
es2015_arrow 72307 ns/iter (± 796) 73879 ns/iter (± 366) 0.98
es2015_block_scoped_fn 68677 ns/iter (± 328) 69584 ns/iter (± 143) 0.99
es2015_block_scoping 124920 ns/iter (± 488) 123392 ns/iter (± 533) 1.01

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

Please sign in to comment.