Skip to content

Commit

Permalink
feat(es/minifier): Enable hoist_props by default (#7535)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Jun 21, 2023
1 parent 2a32a4d commit 07a8580
Show file tree
Hide file tree
Showing 24 changed files with 58 additions and 87 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
//// [destructuringVariableDeclaration1ES5.ts]
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
var _ref = {
a1: 10,
a2: "world"
};
_ref.a1, _ref.a2;
var tmp = {
b11: "world"
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
//// [destructuringVariableDeclaration1ES5iterable.ts]
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
var _ref = {
a1: 10,
a2: "world"
};
_ref.a1, _ref.a2;
var tmp = {
b11: "world"
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
//// [logicalNotOperatorWithAnyOtherType.ts]
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
var M, obj1 = {
x: "",
y: function() {}
}, A = function() {
var M, A = function() {
"use strict";
function A() {
_class_call_check(this, A);
Expand All @@ -15,4 +12,4 @@ var M, obj1 = {
M.n = n;
}(M || (M = {}));
var objA = new A();
obj1.x, obj1.y, objA.a, M.n, A.foo(), objA.a, M.n;
objA.a, M.n, A.foo(), objA.a, M.n;
Original file line number Diff line number Diff line change
@@ -1,6 +1,2 @@
//// [parserNotHexLiteral1.ts]
var x = {
e0: "cat",
x0: "dog"
};
console.info(x.x0), console.info(x.e0);
console.info("dog"), console.info("cat");
Original file line number Diff line number Diff line change
@@ -1,8 +1 @@
//// [typeTagOnPropertyAssignment.js]
var o = {
a: "a",
n: function() {
return "b";
}
};
o.a, o.n;
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
//// [a.js]
var sala = {
name: "uppsala",
not: 0,
nested: "ok"
};
sala.name, sala.not, sala.nested;
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,3 @@ var C = function() {
return C.prototype.m = function(x) {}, C.m = function(x) {}, C;
}();
C.m(), new C().m(), new C().p();
var obj = {
m: function(x) {},
p: function(x) {}
};
obj.m(), obj.p();
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
//// [voidOperatorWithAnyOtherType.ts]
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
var M, obj1 = {
x: "",
y: 1
}, A = function() {
var M, A = function() {
"use strict";
function A() {
_class_call_check(this, A);
Expand All @@ -15,4 +12,4 @@ var M, obj1 = {
M.n = n;
}(M || (M = {}));
var objA = new A();
obj1.x, obj1.y, objA.a, M.n, A.foo(), objA.a, M.n;
objA.a, M.n, A.foo(), objA.a, M.n;
1 change: 1 addition & 0 deletions crates/swc_ecma_minifier/src/compress/optimize/props.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ impl Optimizer<'_> {
.map(|v| {
!v.mutated
&& v.mutation_by_call_count == 0
&& !v.used_as_ref
&& !v.used_as_arg
&& !v.used_in_cond
&& !v.reassigned()
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_minifier/src/option/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ pub struct CompressOptions {
#[cfg_attr(feature = "extra-serde", serde(alias = "hoist_funs"))]
pub hoist_fns: bool,

#[cfg_attr(feature = "extra-serde", serde(default))]
#[cfg_attr(feature = "extra-serde", serde(default = "true_by_default"))]
#[cfg_attr(feature = "extra-serde", serde(alias = "hoist_props"))]
pub hoist_props: bool,

Expand Down Expand Up @@ -391,7 +391,7 @@ impl Default for CompressOptions {
expr: false,
global_defs: Default::default(),
hoist_fns: false,
hoist_props: false,
hoist_props: true,
hoist_vars: false,
ie8: false,
if_return: true,
Expand Down
3 changes: 1 addition & 2 deletions crates/swc_ecma_minifier/src/option/terser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,7 @@ impl TerserCompressorOptions {
})
.collect(),
hoist_fns: self.hoist_funs,
// TODO: Use self.defaults
hoist_props: self.hoist_props.unwrap_or(false),
hoist_props: self.hoist_props.unwrap_or(self.defaults),
hoist_vars: self.hoist_vars,
ie8: self.ie8,
if_return: self.if_return.unwrap_or(self.defaults),
Expand Down
9 changes: 9 additions & 0 deletions crates/swc_ecma_minifier/src/program_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ pub(crate) struct VarUsageInfo {

pub(crate) callee_count: u32,

/// `a` in `foo(a)` or `foo({ a })`.
pub(crate) used_as_ref: bool,

pub(crate) used_as_arg: bool,

pub(crate) indexed_with_dynamic_key: bool,
Expand Down Expand Up @@ -173,6 +176,7 @@ impl Default for VarUsageInfo {
used_recursively: Default::default(),
is_top_level: Default::default(),
assigned_fn_local: true,
used_as_ref: false,
}
}
}
Expand Down Expand Up @@ -477,6 +481,7 @@ impl VarDataLike for VarUsageInfo {
}

fn mark_used_as_arg(&mut self) {
self.used_as_ref = true;
self.used_as_arg = true
}

Expand Down Expand Up @@ -653,6 +658,10 @@ impl ProgramData {
}
});

if is_first {
e.used_as_ref |= ctx.is_id_ref;
}

e.inline_prevented |= ctx.inline_prevented;

if is_first {
Expand Down
23 changes: 10 additions & 13 deletions crates/swc_ecma_minifier/tests/benches-full/echarts.js
Original file line number Diff line number Diff line change
Expand Up @@ -7769,8 +7769,8 @@
}
}
function format(time, template, isUTC, lang) {
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');
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 + '');
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');
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 + '');
}
function getUnitFromValue(value, isUTC) {
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;
Expand Down Expand Up @@ -14485,7 +14485,7 @@
}, List.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) {
for(var list = cloneListForMapAndSample(this, [
dimension
]), 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){
]), 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){
frameSize > len - i && (frameSize = len - i, frameValues.length = frameSize);
for(var k = 0; k < frameSize; k++){
var dataIdx = this.getRawIndex(i + k);
Expand Down Expand Up @@ -25053,7 +25053,7 @@
getAutoCurvenessParams(this) && (this.__curvenessList = [], this.__edgeMap = {}, createCurveness(this));
var graph = createGraphFromNodeEdge(nodes, edges, this, !0, function(nodeData, edgeData) {
nodeData.wrapMethod('getItemModel', function(model) {
var categoryModel = self1._categoriesModels[model.getShallow('category')];
var categoryIdx = model.getShallow('category'), categoryModel = self1._categoriesModels[categoryIdx];
return categoryModel && (categoryModel.parentModel = model.parentModel, model.parentModel = categoryModel), model;
});
var oldGetModel = Model.prototype.getModel;
Expand Down Expand Up @@ -29228,7 +29228,7 @@
}), path;
}
function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {
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;
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;
for(eachPath(bar, function(path) {
path.__pictorialAnimationIndex = index, path.__pictorialRepeatTimes = repeatTimes, index < repeatTimes ? updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate) : updateAttr(path, null, {
scaleX: 0,
Expand Down Expand Up @@ -29434,11 +29434,11 @@
return _this.type = ThemeRiverView.type, _this._layers = [], _this;
}
return __extends(ThemeRiverView, _super), ThemeRiverView.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData(), self1 = this, group = this.group, layersSeries = seriesModel.getLayerSeries(), layoutInfo = data.getLayout('layoutInfo'), rect = layoutInfo.rect, boundaryGap = layoutInfo.boundaryGap;
var data = seriesModel.getData(), self1 = this, group = this.group, layersSeries = seriesModel.getLayerSeries(), layoutInfo = data.getLayout('layoutInfo'), rect = layoutInfo.rect;
function keyGetter(item) {
return item.name;
}
group.x = 0, group.y = rect.y + boundaryGap[0];
group.x = 0, group.y = rect.y + layoutInfo.boundaryGap[0];
var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter), newLayersGroups = [];
function process(status, idx, oldIdx) {
var style, polygon, oldLayersGroups = self1._layers;
Expand Down Expand Up @@ -38873,9 +38873,6 @@
var otherShadowExtent = [
0,
size[1]
], thisShadowExtent = [
0,
size[0]
], areaPoints = [
[
size[0],
Expand All @@ -38885,7 +38882,7 @@
0,
0
]
], linePoints = [], step = thisShadowExtent[1] / (data.count() - 1), thisCoord = 0, stride = Math.round(data.count() / size[0]);
], linePoints = [], step = size[0] / (data.count() - 1), thisCoord = 0, stride = Math.round(data.count() / size[0]);
data.each([
otherDim
], function(value, index) {
Expand Down Expand Up @@ -40049,11 +40046,11 @@
var zr = this.api.getZr();
this.visualMapModel.option.hoverLink ? (zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this), zr.on('mouseout', this._hideIndicator, this)) : this._clearHoverLinkFromSeries();
}, ContinuousView.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) {
var visualMapModel = this.visualMapModel, itemSize = visualMapModel.itemSize;
var visualMapModel = this.visualMapModel;
if (visualMapModel.option.hoverLink) {
var halfHoverLinkSize, hoverLinkDataSize, sizeExtent = [
0,
itemSize[1]
visualMapModel.itemSize[1]
], dataExtent = visualMapModel.getExtent();
cursorPos = mathMin$a(mathMax$a(sizeExtent[0], cursorPos), sizeExtent[1]);
var halfHoverLinkSize1 = (halfHoverLinkSize = 6, (hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize')) && (halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, !0) / 2), halfHoverLinkSize), hoverRange = [
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_minifier/tests/benches-full/lodash.js
Original file line number Diff line number Diff line change
Expand Up @@ -1349,8 +1349,8 @@
}
function createCaseFirst(methodName) {
return function(string) {
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);
return chr[methodName]() + trailing;
var strSymbols = hasUnicode(string = toString(string)) ? stringToArray(string) : undefined, trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);
return (strSymbols ? strSymbols[0] : string.charAt(0))[methodName]() + trailing;
};
}
function createCompounder(callback) {
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_minifier/tests/benches-full/three.js
Original file line number Diff line number Diff line change
Expand Up @@ -13073,8 +13073,8 @@
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;
var actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;
delete actionByRoot[rootUuid], 0 === knownActionsForClip.length && delete actionsByClip[clipUuid], this._removeInactiveBindingsForAction(action);
var rootUuid = (action._localRoot || this._root).uuid;
delete actionsForClip.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
6 changes: 3 additions & 3 deletions crates/swc_ecma_minifier/tests/benches-full/victory.js
Original file line number Diff line number Diff line change
Expand Up @@ -6864,7 +6864,7 @@
for(var _i = 0, _n2 = hull.length; _i < _n2; ++_i)hullIndex[hull[_i]] = _i;
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));
}, _proto.neighbors = function(i) {
var results = [], inedges = this.inedges, hull = this.hull, _hullIndex = this._hullIndex, halfedges = this.halfedges, triangles = this.triangles, e0 = inedges[i];
var results = [], hull = this.hull, _hullIndex = this._hullIndex, halfedges = this.halfedges, triangles = this.triangles, e0 = this.inedges[i];
if (-1 === e0) return results;
var e = e0, p0 = -1;
do {
Expand All @@ -6881,8 +6881,8 @@
for(var c, i0 = i; (c = this._step(i, x, y)) >= 0 && c !== i && c !== i0;)i = c;
return c;
}, _proto._step = function(i, x, y) {
var inedges = this.inedges, points = this.points;
if (-1 === inedges[i] || !points.length) return (i + 1) % (points.length >> 1);
var points = this.points;
if (-1 === this.inedges[i] || !points.length) return (i + 1) % (points.length >> 1);
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]();;){
if (_isArray) {
if (_i2 >= _iterator.length) break;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
export function f() {
const foos = something.getFoos();
return foos?.[0];
return something.getFoos()?.[0];
}

1 comment on commit 07a8580

@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: 07a8580 Previous: 724e75d Ratio
es/full/bugs-1 311446 ns/iter (± 7415) 365156 ns/iter (± 10954) 0.85
es/full/minify/libraries/antd 1491268377 ns/iter (± 17984480) 2038957742 ns/iter (± 23607286) 0.73
es/full/minify/libraries/d3 313481747 ns/iter (± 2682684) 417847052 ns/iter (± 13721842) 0.75
es/full/minify/libraries/echarts 1189199264 ns/iter (± 5348380) 1617763304 ns/iter (± 26617322) 0.74
es/full/minify/libraries/jquery 95999265 ns/iter (± 271131) 122621846 ns/iter (± 1741436) 0.78
es/full/minify/libraries/lodash 114056262 ns/iter (± 639677) 146459374 ns/iter (± 3448106) 0.78
es/full/minify/libraries/moment 56370046 ns/iter (± 112875) 68773708 ns/iter (± 2082084) 0.82
es/full/minify/libraries/react 20362007 ns/iter (± 74144) 24632516 ns/iter (± 763448) 0.83
es/full/minify/libraries/terser 246320144 ns/iter (± 583298) 340121957 ns/iter (± 8530418) 0.72
es/full/minify/libraries/three 430351892 ns/iter (± 1308223) 620622359 ns/iter (± 19240862) 0.69
es/full/minify/libraries/typescript 2938694757 ns/iter (± 8222697) 3954064425 ns/iter (± 45852693) 0.74
es/full/minify/libraries/victory 622648589 ns/iter (± 4421667) 880055543 ns/iter (± 43034928) 0.71
es/full/minify/libraries/vue 138672031 ns/iter (± 265778) 180594757 ns/iter (± 4563328) 0.77
es/full/codegen/es3 36730 ns/iter (± 64) 42188 ns/iter (± 118) 0.87
es/full/codegen/es5 36726 ns/iter (± 59) 42334 ns/iter (± 46) 0.87
es/full/codegen/es2015 36766 ns/iter (± 57) 42250 ns/iter (± 68) 0.87
es/full/codegen/es2016 36707 ns/iter (± 84) 42286 ns/iter (± 66) 0.87
es/full/codegen/es2017 36758 ns/iter (± 68) 42214 ns/iter (± 63) 0.87
es/full/codegen/es2018 36692 ns/iter (± 57) 42243 ns/iter (± 86) 0.87
es/full/codegen/es2019 36775 ns/iter (± 41) 42274 ns/iter (± 53) 0.87
es/full/codegen/es2020 36813 ns/iter (± 61) 42267 ns/iter (± 71) 0.87
es/full/all/es3 182875677 ns/iter (± 627458) 213466756 ns/iter (± 5068486) 0.86
es/full/all/es5 172260321 ns/iter (± 713960) 199078368 ns/iter (± 3085059) 0.87
es/full/all/es2015 128258708 ns/iter (± 619131) 157425055 ns/iter (± 3483292) 0.81
es/full/all/es2016 127479126 ns/iter (± 803844) 156234220 ns/iter (± 3389256) 0.82
es/full/all/es2017 126524676 ns/iter (± 550034) 157076827 ns/iter (± 1997065) 0.81
es/full/all/es2018 124950422 ns/iter (± 696421) 157073832 ns/iter (± 3786229) 0.80
es/full/all/es2019 124381628 ns/iter (± 612065) 155763986 ns/iter (± 4632596) 0.80
es/full/all/es2020 119608461 ns/iter (± 644347) 149411767 ns/iter (± 2436820) 0.80
es/full/parser 519954 ns/iter (± 4491) 607832 ns/iter (± 11857) 0.86
es/full/base/fixer 19248 ns/iter (± 94) 25012 ns/iter (± 31) 0.77
es/full/base/resolver_and_hygiene 95829 ns/iter (± 217) 105488 ns/iter (± 204) 0.91
serialization of serde 296 ns/iter (± 0) 258 ns/iter (± 3) 1.15
css/minify/libraries/bootstrap 30758158 ns/iter (± 47858) 37536347 ns/iter (± 816229) 0.82
css/visitor/compare/clone 1982083 ns/iter (± 10082) 2491947 ns/iter (± 87524) 0.80
css/visitor/compare/visit_mut_span 2120195 ns/iter (± 7527) 2671720 ns/iter (± 69763) 0.79
css/visitor/compare/visit_mut_span_panic 2168974 ns/iter (± 16731) 2657618 ns/iter (± 59036) 0.82
css/visitor/compare/fold_span 2810510 ns/iter (± 10191) 3467740 ns/iter (± 109710) 0.81
css/visitor/compare/fold_span_panic 3013219 ns/iter (± 7821) 3665766 ns/iter (± 102186) 0.82
css/lexer/bootstrap_5_1_3 4688129 ns/iter (± 4338) 5551448 ns/iter (± 2981) 0.84
css/lexer/foundation_6_7_4 3928119 ns/iter (± 1051) 4675962 ns/iter (± 952) 0.84
css/lexer/tailwind_3_1_1 747435 ns/iter (± 169) 891048 ns/iter (± 438) 0.84
css/parser/bootstrap_5_1_3 20494360 ns/iter (± 21775) 24872272 ns/iter (± 205369) 0.82
css/parser/foundation_6_7_4 16511041 ns/iter (± 26837) 19776435 ns/iter (± 200845) 0.83
css/parser/tailwind_3_1_1 3204240 ns/iter (± 2395) 3684263 ns/iter (± 11030) 0.87
es/codegen/colors 731176 ns/iter (± 397764) 708637 ns/iter (± 387999) 1.03
es/codegen/large 2997641 ns/iter (± 1580308) 2878892 ns/iter (± 1526305) 1.04
es/codegen/with-parser/colors 48977 ns/iter (± 193) 57299 ns/iter (± 349) 0.85
es/codegen/with-parser/large 526232 ns/iter (± 1163) 582995 ns/iter (± 1615) 0.90
es/minify/libraries/antd 1279544562 ns/iter (± 9222565) 1849005527 ns/iter (± 32686839) 0.69
es/minify/libraries/d3 278355930 ns/iter (± 391605) 378889788 ns/iter (± 17438763) 0.73
es/minify/libraries/echarts 1014435118 ns/iter (± 3022892) 1421295096 ns/iter (± 25854723) 0.71
es/minify/libraries/jquery 83974617 ns/iter (± 104963) 103944701 ns/iter (± 4705463) 0.81
es/minify/libraries/lodash 102732919 ns/iter (± 601515) 135773514 ns/iter (± 6322656) 0.76
es/minify/libraries/moment 49484430 ns/iter (± 87581) 60924153 ns/iter (± 1715998) 0.81
es/minify/libraries/react 18122097 ns/iter (± 38525) 21785038 ns/iter (± 847514) 0.83
es/minify/libraries/terser 212503658 ns/iter (± 400527) 282201438 ns/iter (± 15792795) 0.75
es/minify/libraries/three 363336665 ns/iter (± 759924) 526698819 ns/iter (± 26363412) 0.69
es/minify/libraries/typescript 2547450117 ns/iter (± 6984830) 3385703456 ns/iter (± 30211713) 0.75
es/minify/libraries/victory 529786467 ns/iter (± 1378084) 793677603 ns/iter (± 23326369) 0.67
es/minify/libraries/vue 123129011 ns/iter (± 207961) 158520092 ns/iter (± 4514892) 0.78
es/visitor/compare/clone 2062844 ns/iter (± 7154) 2476747 ns/iter (± 133163) 0.83
es/visitor/compare/visit_mut_span 2392849 ns/iter (± 6756) 2854429 ns/iter (± 78652) 0.84
es/visitor/compare/visit_mut_span_panic 2435109 ns/iter (± 3123) 2921321 ns/iter (± 70319) 0.83
es/visitor/compare/fold_span 3474993 ns/iter (± 3707) 3991931 ns/iter (± 207418) 0.87
es/visitor/compare/fold_span_panic 3623623 ns/iter (± 6238) 4308544 ns/iter (± 220702) 0.84
es/lexer/colors 13496 ns/iter (± 48) 15063 ns/iter (± 85) 0.90
es/lexer/angular 6184488 ns/iter (± 10361) 7242770 ns/iter (± 6624) 0.85
es/lexer/backbone 809429 ns/iter (± 2772) 872414 ns/iter (± 490) 0.93
es/lexer/jquery 4599444 ns/iter (± 5709) 4881579 ns/iter (± 1616) 0.94
es/lexer/jquery mobile 7008927 ns/iter (± 5562) 7554831 ns/iter (± 6199) 0.93
es/lexer/mootools 3610108 ns/iter (± 5288) 3797458 ns/iter (± 1467) 0.95
es/lexer/underscore 675493 ns/iter (± 826) 721196 ns/iter (± 302) 0.94
es/lexer/three 21310108 ns/iter (± 14055) 22739674 ns/iter (± 57668) 0.94
es/lexer/yui 3951912 ns/iter (± 46892) 4381447 ns/iter (± 4944) 0.90
es/parser/colors 29231 ns/iter (± 59) 33210 ns/iter (± 135) 0.88
es/parser/angular 14385091 ns/iter (± 63807) 18301787 ns/iter (± 369052) 0.79
es/parser/backbone 2146282 ns/iter (± 10761) 2442897 ns/iter (± 25536) 0.88
es/parser/jquery 11650061 ns/iter (± 52598) 13601309 ns/iter (± 867507) 0.86
es/parser/jquery mobile 17870631 ns/iter (± 98208) 21632766 ns/iter (± 921431) 0.83
es/parser/mootools 8941947 ns/iter (± 33460) 10585403 ns/iter (± 165973) 0.84
es/parser/underscore 1856106 ns/iter (± 6680) 2079638 ns/iter (± 15325) 0.89
es/parser/three 50188817 ns/iter (± 353635) 63497277 ns/iter (± 900249) 0.79
es/parser/yui 8918620 ns/iter (± 42628) 10721928 ns/iter (± 287569) 0.83
es/preset-env/usage/builtin_type 146263 ns/iter (± 32717) 151199 ns/iter (± 33160) 0.97
es/preset-env/usage/property 20003 ns/iter (± 80) 29499 ns/iter (± 124) 0.68
es/resolver/typescript 94657468 ns/iter (± 2021857) 130713624 ns/iter (± 3919272) 0.72
es/fixer/typescript 65260958 ns/iter (± 431297) 91281907 ns/iter (± 1640074) 0.71
es/hygiene/typescript 145576615 ns/iter (± 2595746) 210364286 ns/iter (± 7418974) 0.69
es/resolver_with_hygiene/typescript 314100761 ns/iter (± 4524942) 441788019 ns/iter (± 4894716) 0.71
es/visitor/base-perf/module_clone 61269 ns/iter (± 260) 85502 ns/iter (± 570) 0.72
es/visitor/base-perf/fold_empty 64657 ns/iter (± 274) 94967 ns/iter (± 216) 0.68
es/visitor/base-perf/fold_noop_impl_all 64594 ns/iter (± 216) 95413 ns/iter (± 208) 0.68
es/visitor/base-perf/fold_noop_impl_vec 64637 ns/iter (± 241) 95788 ns/iter (± 398) 0.67
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 61 ns/iter (± 0) 0.93
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 45 ns/iter (± 0) 0.89
es/visitor/base-perf/boxing_boxed 114 ns/iter (± 0) 109 ns/iter (± 0) 1.05
es/visitor/base-perf/boxing_unboxed 80 ns/iter (± 0) 82 ns/iter (± 0) 0.98
es/visitor/base-perf/visit_empty 0 ns/iter (± 0)
es/visitor/base-perf/visit_contains_this 2610 ns/iter (± 16) 3517 ns/iter (± 91) 0.74
es/base/parallel/resolver/typescript 4520751972 ns/iter (± 240177492) 7195126351 ns/iter (± 525683832) 0.63
es/base/parallel/hygiene/typescript 1564915274 ns/iter (± 18862775) 2402899789 ns/iter (± 22916067) 0.65
misc/visitors/time-complexity/time 5 105 ns/iter (± 1) 104 ns/iter (± 0) 1.01
misc/visitors/time-complexity/time 10 278 ns/iter (± 0) 357 ns/iter (± 6) 0.78
misc/visitors/time-complexity/time 15 543 ns/iter (± 3) 681 ns/iter (± 9) 0.80
misc/visitors/time-complexity/time 20 944 ns/iter (± 3) 1243 ns/iter (± 1) 0.76
misc/visitors/time-complexity/time 40 3742 ns/iter (± 22) 6292 ns/iter (± 16) 0.59
misc/visitors/time-complexity/time 60 9280 ns/iter (± 9) 15779 ns/iter (± 8) 0.59
es/full-target/es2016 242060 ns/iter (± 546) 270765 ns/iter (± 571) 0.89
es/full-target/es2017 226779 ns/iter (± 1596) 261150 ns/iter (± 398) 0.87
es/full-target/es2018 214683 ns/iter (± 1204) 249877 ns/iter (± 416) 0.86
es2020_nullish_coalescing 72857 ns/iter (± 587) 98615 ns/iter (± 419) 0.74
es2020_optional_chaining 84767 ns/iter (± 193) 115531 ns/iter (± 461) 0.73
es2022_class_properties 122036 ns/iter (± 421) 157823 ns/iter (± 284) 0.77
es2018_object_rest_spread 76942 ns/iter (± 207) 100085 ns/iter (± 168) 0.77
es2019_optional_catch_binding 65764 ns/iter (± 236) 88773 ns/iter (± 147) 0.74
es2017_async_to_generator 64284 ns/iter (± 195) 89260 ns/iter (± 284) 0.72
es2016_exponentiation 71076 ns/iter (± 162) 96190 ns/iter (± 232) 0.74
es2015_arrow 73585 ns/iter (± 172) 99205 ns/iter (± 345) 0.74
es2015_block_scoped_fn 70399 ns/iter (± 222) 97164 ns/iter (± 225) 0.72
es2015_block_scoping 134682 ns/iter (± 699) 185310 ns/iter (± 168) 0.73

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

Please sign in to comment.