Skip to content

Commit

Permalink
feat(es/minifier): Compress common sub expressions in sequences (#7587)
Browse files Browse the repository at this point in the history
  • Loading branch information
Austaras committed Jul 4, 2023
1 parent 9cb9f05 commit ff1ad95
Show file tree
Hide file tree
Showing 27 changed files with 180 additions and 105 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

81 changes: 81 additions & 0 deletions crates/swc_ecma_minifier/src/compress/optimize/conditionals.rs
Expand Up @@ -616,6 +616,87 @@ impl Optimizer<'_> {
}))
}

(Expr::Seq(left), Expr::Seq(right)) => {
let left_len = left.exprs.len();
let right_len = right.exprs.len();
let min_len = left_len.min(right_len);

let mut idx = 0;

while idx < min_len
&& left.exprs[left_len - idx - 1]
.eq_ignore_span(&right.exprs[right_len - idx - 1])
&& !matches!(
&*left.exprs[left_len - idx - 1],
Expr::Yield(..) | Expr::Fn(..)
)
{
idx += 1;
}

if idx == 0 {
None
} else if idx == left_len {
self.changed = true;
report_change!("conditionals: Reducing similar seq expr in cons");

let mut alt = right.exprs.take();

alt.truncate(alt.len() - idx);

let mut seq = vec![Box::new(Expr::Bin(BinExpr {
span: DUMMY_SP,
left: test.take(),
op: op!("||"),
right: Expr::from_exprs(alt),
}))];
seq.append(&mut left.exprs);

Some(Expr::Seq(SeqExpr {
span: DUMMY_SP,
exprs: seq,
}))
} else if idx == right_len {
self.changed = true;
report_change!("conditionals: Reducing similar seq expr in alt");

let mut cons = left.exprs.take();

cons.truncate(cons.len() - idx);

let mut seq = vec![Box::new(Expr::Bin(BinExpr {
span: DUMMY_SP,
left: test.take(),
op: op!("&&"),
right: Expr::from_exprs(cons),
}))];
seq.append(&mut right.exprs);

Some(Expr::Seq(SeqExpr {
span: DUMMY_SP,
exprs: seq,
}))
} else {
self.changed = true;
report_change!("conditionals: Reducing similar seq expr");
let _ = left.exprs.split_off(left_len - idx);
let mut common = right.exprs.split_off(right_len - idx);

let mut seq = vec![Box::new(Expr::Cond(CondExpr {
span: DUMMY_SP,
test: test.take(),
cons: Box::new(Expr::Seq(left.take())),
alt: Box::new(Expr::Seq(right.take())),
}))];
seq.append(&mut common);

Some(Expr::Seq(SeqExpr {
span: DUMMY_SP,
exprs: seq,
}))
}
}

_ => None,
}
}
Expand Down
6 changes: 3 additions & 3 deletions crates/swc_ecma_minifier/tests/benches-full/d3.js
Expand Up @@ -4208,7 +4208,7 @@
(parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) && (retainer = parent, j = i);
}
for(; node.data !== d;)if (previous = node, !(node = node.next)) return this;
return ((next = node.next) && delete node.next, previous) ? (next ? previous.next = next : delete previous.next, this) : parent ? (next ? parent[i] = next : delete parent[i], (node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length && (retainer ? retainer[j] = node : this._root = node), this) : (this._root = next, this);
return ((next = node.next) && delete node.next, previous) ? next ? previous.next = next : delete previous.next : parent ? (next ? parent[i] = next : delete parent[i], (node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length && (retainer ? retainer[j] = node : this._root = node)) : this._root = next, this;
}, treeProto.removeAll = function(data) {
for(var i = 0, n = data.length; i < n; ++i)this.remove(data[i]);
return this;
Expand Down Expand Up @@ -10067,11 +10067,11 @@
return values;
}, exports1.interval = function(callback, delay, time) {
var t = new Timer, total = delay;
return null == delay ? (t.restart(callback, delay, time), t) : (t._restart = t.restart, t.restart = function(callback, delay, time) {
return null == delay || (t._restart = t.restart, t.restart = function(callback, delay, time) {
delay = +delay, time = null == time ? now() : +time, t._restart(function tick(elapsed) {
elapsed += total, t._restart(tick, total += delay, time), callback(elapsed);
}, delay, time);
}, t.restart(callback, delay, time), t);
}), t.restart(callback, delay, time), t;
}, exports1.isoFormat = formatIso, exports1.isoParse = parseIso, exports1.json = function(input, init) {
return fetch(input, init).then(responseJson);
}, exports1.lab = lab, exports1.lch = function(l, c, h, opacity) {
Expand Down
15 changes: 6 additions & 9 deletions crates/swc_ecma_minifier/tests/benches-full/echarts.js
Expand Up @@ -1059,7 +1059,7 @@
}
}, Transformable.prototype.getGlobalScale = function(out) {
var m = this.transform;
return (out = out || [], m) ? (out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]), out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]), m[0] < 0 && (out[0] = -out[0]), m[3] < 0 && (out[1] = -out[1]), out) : (out[0] = 1, out[1] = 1, out);
return (out = out || [], m) ? (out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]), out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]), m[0] < 0 && (out[0] = -out[0]), m[3] < 0 && (out[1] = -out[1])) : (out[0] = 1, out[1] = 1), out;
}, Transformable.prototype.transformCoordToLocal = function(x, y) {
var v2 = [
x,
Expand Down Expand Up @@ -4327,12 +4327,12 @@
firstCmpt
] : [], result;
}
return 'none' === indexOption || !1 === indexOption ? (assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.'), result.models = [], result) : ('all' === indexOption && (assert(opt.enableAll, '`"all"` is not a valid value on index option.'), indexOption = idOption = nameOption = null), result.models = ecModel.queryComponents({
return 'none' === indexOption || !1 === indexOption ? (assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.'), result.models = []) : ('all' === indexOption && (assert(opt.enableAll, '`"all"` is not a valid value on index option.'), indexOption = idOption = nameOption = null), result.models = ecModel.queryComponents({
mainType: mainType,
index: indexOption,
id: idOption,
name: nameOption
}), result);
})), result;
}
function setAttribute(dom, key, value) {
dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;
Expand Down Expand Up @@ -36753,19 +36753,16 @@
], xLeft += sizePlusGap), showPrevBtn && (prevBtnPosition = [
xLeft,
0
], xLeft += sizePlusGap), showNextBtn && (nextBtnPosition = [
xRight - controlSize,
0
], xRight -= sizePlusGap)) : (showPlayBtn && (playPosition = [
], xLeft += sizePlusGap)) : (showPlayBtn && (playPosition = [
xRight - controlSize,
0
], xRight -= sizePlusGap), showPrevBtn && (prevBtnPosition = [
0,
0
], xLeft += sizePlusGap), showNextBtn && (nextBtnPosition = [
], xLeft += sizePlusGap)), showNextBtn && (nextBtnPosition = [
xRight - controlSize,
0
], xRight -= sizePlusGap));
], xRight -= sizePlusGap);
var axisExtent = [
xLeft,
xRight
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_minifier/tests/benches-full/moment.js
Expand Up @@ -1522,7 +1522,7 @@
return out;
}
function listWeekdaysImpl(localeSorted, format, index, field) {
'boolean' == typeof localeSorted ? (isNumber(format) && (index = format, format = void 0), format = format || '') : (index = format = localeSorted, localeSorted = !1, isNumber(format) && (index = format, format = void 0), format = format || '');
'boolean' == typeof localeSorted || (index = format = localeSorted, localeSorted = !1), isNumber(format) && (index = format, format = void 0), format = format || '';
var i, locale = getLocale(), shift = localeSorted ? locale._week.dow : 0, out = [];
if (null != index) return get$1(format, (index + shift) % 7, field, 'day');
for(i = 0; i < 7; i++)out[i] = get$1(format, (i + shift) % 7, field, 'day');
Expand Down
6 changes: 3 additions & 3 deletions crates/swc_ecma_minifier/tests/benches-full/terser.js
Expand Up @@ -7235,15 +7235,15 @@
var fixed = def.fixed;
if (!fixed && "=" != node.operator && !node.logical) return finish_walk();
var eq = "=" == node.operator, value = eq ? node.right : node;
return is_modified(compressor, tw, node, value, 0) ? finish_walk() : (def.references.push(sym), node.logical || (eq || (def.chained = !0), def.fixed = eq ? function() {
return is_modified(compressor, tw, node, value, 0) ? finish_walk() : ((def.references.push(sym), node.logical || (eq || (def.chained = !0), def.fixed = eq ? function() {
return node.right;
} : function() {
return make_node(AST_Binary, node, {
operator: node.operator.slice(0, -1),
left: fixed instanceof AST_Node ? fixed : fixed(),
right: node.right
});
}), node.logical) ? (mark(tw, def, !1), push(tw), node.right.walk(tw), pop(tw), !0) : (mark(tw, def, !1), node.right.walk(tw), mark(tw, def, !0), mark_escaped(tw, def, sym.scope, node, value, 0, 1), !0);
}), node.logical) ? (mark(tw, def, !1), push(tw), node.right.walk(tw), pop(tw)) : (mark(tw, def, !1), node.right.walk(tw), mark(tw, def, !0), mark_escaped(tw, def, sym.scope, node, value, 0, 1)), !0);
}), def_reduce_vars(AST_Binary, function(tw) {
if (lazy_op.has(this.operator)) return this.left.walk(tw), push(tw), this.right.walk(tw), pop(tw), !0;
}), def_reduce_vars(AST_Block, function(tw, descend, compressor) {
Expand Down Expand Up @@ -8705,7 +8705,7 @@
operator: "void",
expression: expressions[end]
}), expressions.length = end + 1);
}(), 0 == end) ? ((self1 = maintain_this_binding(compressor.parent(), compressor.self(), expressions[0])) instanceof AST_Sequence || (self1 = self1.optimize(compressor)), self1) : (self1.expressions = expressions, self1);
}(), 0 == end) ? (self1 = maintain_this_binding(compressor.parent(), compressor.self(), expressions[0])) instanceof AST_Sequence || (self1 = self1.optimize(compressor)) : self1.expressions = expressions, self1;
}), AST_Unary.DEFMETHOD("lift_sequences", function(compressor) {
if (compressor.option("sequences") && this.expression instanceof AST_Sequence) {
var x = this.expression.expressions.slice(), e = this.clone();
Expand Down
6 changes: 3 additions & 3 deletions crates/swc_ecma_minifier/tests/benches-full/three.js
Expand Up @@ -769,7 +769,7 @@
return this._onChangeCallback(), this;
}, _proto.setFromUnitVectors = function(vFrom, vTo) {
var r = vFrom.dot(vTo) + 1;
return r < 0.000001 ? (r = 0, Math.abs(vFrom.x) > Math.abs(vFrom.z) ? (this._x = -vFrom.y, this._y = vFrom.x, this._z = 0, this._w = r) : (this._x = 0, this._y = -vFrom.z, this._z = vFrom.y, this._w = r)) : (this._x = vFrom.y * vTo.z - vFrom.z * vTo.y, this._y = vFrom.z * vTo.x - vFrom.x * vTo.z, this._z = vFrom.x * vTo.y - vFrom.y * vTo.x, this._w = r), this.normalize();
return r < 0.000001 ? (r = 0, Math.abs(vFrom.x) > Math.abs(vFrom.z) ? (this._x = -vFrom.y, this._y = vFrom.x, this._z = 0) : (this._x = 0, this._y = -vFrom.z, this._z = vFrom.y)) : (this._x = vFrom.y * vTo.z - vFrom.z * vTo.y, this._y = vFrom.z * vTo.x - vFrom.x * vTo.z, this._z = vFrom.x * vTo.y - vFrom.y * vTo.x), this._w = r, this.normalize();
}, _proto.angleTo = function(q) {
return 2 * Math.acos(Math.abs(MathUtils.clamp(this.dot(q), -1, 1)));
}, _proto.rotateTowards = function(q, step) {
Expand Down Expand Up @@ -1229,7 +1229,7 @@
var deltaLengthSq = this.center.distanceToSquared(point);
return void 0 === target && (console.warn('THREE.Sphere: .clampPoint() target is now required'), target = new Vector3()), target.copy(point), deltaLengthSq > this.radius * this.radius && (target.sub(this.center).normalize(), target.multiplyScalar(this.radius).add(this.center)), target;
}, _proto.getBoundingBox = function(target) {
return (void 0 === target && (console.warn('THREE.Sphere: .getBoundingBox() target is now required'), target = new Box3()), this.isEmpty()) ? (target.makeEmpty(), target) : (target.set(this.center, this.center), target.expandByScalar(this.radius), target);
return (void 0 === target && (console.warn('THREE.Sphere: .getBoundingBox() target is now required'), target = new Box3()), this.isEmpty()) ? target.makeEmpty() : (target.set(this.center, this.center), target.expandByScalar(this.radius)), target;
}, _proto.applyMatrix4 = function(matrix) {
return this.center.applyMatrix4(matrix), this.radius = this.radius * matrix.getMaxScaleOnAxis(), this;
}, _proto.translate = function(offset) {
Expand Down Expand Up @@ -1700,7 +1700,7 @@
for(var i = 0; i < arguments.length; i++)this.add(arguments[i]);
return this;
}
return object === this ? (console.error('THREE.Object3D.add: object can\'t be added as a child of itself.', object), this) : (object && object.isObject3D ? (null !== object.parent && object.parent.remove(object), object.parent = this, this.children.push(object), object.dispatchEvent(_addedEvent)) : console.error('THREE.Object3D.add: object not an instance of THREE.Object3D.', object), this);
return object === this ? console.error('THREE.Object3D.add: object can\'t be added as a child of itself.', object) : object && object.isObject3D ? (null !== object.parent && object.parent.remove(object), object.parent = this, this.children.push(object), object.dispatchEvent(_addedEvent)) : console.error('THREE.Object3D.add: object not an instance of THREE.Object3D.', object), this;
},
remove: function(object) {
if (arguments.length > 1) {
Expand Down

1 comment on commit ff1ad95

@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: ff1ad95 Previous: 47d2edd Ratio
es/full/bugs-1 306225 ns/iter (± 4237) 303754 ns/iter (± 10391) 1.01
es/full/minify/libraries/antd 1463826563 ns/iter (± 15880339) 1479881007 ns/iter (± 15346568) 0.99
es/full/minify/libraries/d3 311852291 ns/iter (± 628917) 322529959 ns/iter (± 4409340) 0.97
es/full/minify/libraries/echarts 1182368047 ns/iter (± 3110877) 1204757356 ns/iter (± 10909836) 0.98
es/full/minify/libraries/jquery 95663256 ns/iter (± 244711) 95757637 ns/iter (± 341815) 1.00
es/full/minify/libraries/lodash 113228438 ns/iter (± 243178) 113589497 ns/iter (± 270471) 1.00
es/full/minify/libraries/moment 56058986 ns/iter (± 132721) 56007792 ns/iter (± 72668) 1.00
es/full/minify/libraries/react 20127877 ns/iter (± 69924) 20108038 ns/iter (± 63537) 1.00
es/full/minify/libraries/terser 247483599 ns/iter (± 642413) 247915709 ns/iter (± 869642) 1.00
es/full/minify/libraries/three 434822429 ns/iter (± 1648553) 436086240 ns/iter (± 1547766) 1.00
es/full/minify/libraries/typescript 2976570567 ns/iter (± 6821636) 2931924068 ns/iter (± 9864819) 1.02
es/full/minify/libraries/victory 633314912 ns/iter (± 3387657) 627334244 ns/iter (± 5979752) 1.01
es/full/minify/libraries/vue 138214836 ns/iter (± 373458) 138210915 ns/iter (± 418795) 1.00
es/full/codegen/es3 36574 ns/iter (± 69) 37219 ns/iter (± 126) 0.98
es/full/codegen/es5 36557 ns/iter (± 53) 37157 ns/iter (± 75) 0.98
es/full/codegen/es2015 36528 ns/iter (± 51) 37239 ns/iter (± 71) 0.98
es/full/codegen/es2016 36582 ns/iter (± 112) 37211 ns/iter (± 82) 0.98
es/full/codegen/es2017 36622 ns/iter (± 108) 37222 ns/iter (± 84) 0.98
es/full/codegen/es2018 36557 ns/iter (± 46) 37199 ns/iter (± 75) 0.98
es/full/codegen/es2019 36704 ns/iter (± 84) 37227 ns/iter (± 61) 0.99
es/full/codegen/es2020 36631 ns/iter (± 51) 37168 ns/iter (± 65) 0.99
es/full/all/es3 181870481 ns/iter (± 711836) 182539747 ns/iter (± 484497) 1.00
es/full/all/es5 173265734 ns/iter (± 929359) 173951819 ns/iter (± 739205) 1.00
es/full/all/es2015 130964670 ns/iter (± 809552) 131291799 ns/iter (± 782267) 1.00
es/full/all/es2016 130009052 ns/iter (± 740954) 130798828 ns/iter (± 339249) 0.99
es/full/all/es2017 129004512 ns/iter (± 579145) 130123731 ns/iter (± 431889) 0.99
es/full/all/es2018 127488613 ns/iter (± 655999) 127483204 ns/iter (± 617335) 1.00
es/full/all/es2019 126244221 ns/iter (± 496360) 126866347 ns/iter (± 684112) 1.00
es/full/all/es2020 122050528 ns/iter (± 614869) 122577046 ns/iter (± 297779) 1.00
es/full/parser 569310 ns/iter (± 5703) 560809 ns/iter (± 1923) 1.02
es/full/base/fixer 19049 ns/iter (± 82) 19056 ns/iter (± 101) 1.00
es/full/base/resolver_and_hygiene 93798 ns/iter (± 201) 92949 ns/iter (± 164) 1.01
serialization of serde 297 ns/iter (± 2) 299 ns/iter (± 1) 0.99
css/minify/libraries/bootstrap 30586901 ns/iter (± 41651) 30713654 ns/iter (± 46620) 1.00
css/visitor/compare/clone 2076005 ns/iter (± 21031) 1997582 ns/iter (± 16362) 1.04
css/visitor/compare/visit_mut_span 2211484 ns/iter (± 24556) 2107275 ns/iter (± 10220) 1.05
css/visitor/compare/visit_mut_span_panic 2304850 ns/iter (± 19471) 2173956 ns/iter (± 12393) 1.06
css/visitor/compare/fold_span 2913217 ns/iter (± 17853) 2914018 ns/iter (± 21923) 1.00
css/visitor/compare/fold_span_panic 3129798 ns/iter (± 43009) 3108407 ns/iter (± 12397) 1.01
css/lexer/bootstrap_5_1_3 4741492 ns/iter (± 6750) 4742696 ns/iter (± 6020) 1.00
css/lexer/foundation_6_7_4 4004102 ns/iter (± 1938) 3993202 ns/iter (± 2903) 1.00
css/lexer/tailwind_3_1_1 763625 ns/iter (± 840) 760201 ns/iter (± 358) 1.00
css/parser/bootstrap_5_1_3 20361805 ns/iter (± 29762) 20602595 ns/iter (± 26500) 0.99
css/parser/foundation_6_7_4 16425556 ns/iter (± 13202) 16638044 ns/iter (± 16721) 0.99
css/parser/tailwind_3_1_1 3166770 ns/iter (± 2008) 3215846 ns/iter (± 2884) 0.98
es/codegen/colors 733185 ns/iter (± 395356) 735026 ns/iter (± 397377) 1.00
es/codegen/large 3017522 ns/iter (± 1603419) 3020228 ns/iter (± 1598131) 1.00
es/codegen/with-parser/colors 47897 ns/iter (± 161) 49079 ns/iter (± 146) 0.98
es/codegen/with-parser/large 510187 ns/iter (± 953) 520284 ns/iter (± 1241) 0.98
es/minify/libraries/antd 1282549722 ns/iter (± 7914435) 1284220878 ns/iter (± 10742149) 1.00
es/minify/libraries/d3 280630769 ns/iter (± 695271) 278024561 ns/iter (± 514468) 1.01
es/minify/libraries/echarts 1036876357 ns/iter (± 3353216) 1038700072 ns/iter (± 3413514) 1.00
es/minify/libraries/jquery 84386565 ns/iter (± 104369) 83463892 ns/iter (± 129712) 1.01
es/minify/libraries/lodash 103929895 ns/iter (± 133425) 102099424 ns/iter (± 192397) 1.02
es/minify/libraries/moment 49924497 ns/iter (± 65917) 49159369 ns/iter (± 76968) 1.02
es/minify/libraries/react 18193382 ns/iter (± 73738) 17965705 ns/iter (± 25141) 1.01
es/minify/libraries/terser 214257005 ns/iter (± 218049) 212496268 ns/iter (± 273773) 1.01
es/minify/libraries/three 369159576 ns/iter (± 3063660) 367966430 ns/iter (± 578744) 1.00
es/minify/libraries/typescript 2572360953 ns/iter (± 6785002) 2560079636 ns/iter (± 12260288) 1.00
es/minify/libraries/victory 535918758 ns/iter (± 3293022) 541577843 ns/iter (± 1945704) 0.99
es/minify/libraries/vue 124302157 ns/iter (± 192070) 123286396 ns/iter (± 187022) 1.01
es/visitor/compare/clone 2068497 ns/iter (± 20112) 2064708 ns/iter (± 5707) 1.00
es/visitor/compare/visit_mut_span 2398686 ns/iter (± 3101) 2409752 ns/iter (± 6201) 1.00
es/visitor/compare/visit_mut_span_panic 2448911 ns/iter (± 5885) 2447778 ns/iter (± 4183) 1.00
es/visitor/compare/fold_span 3465468 ns/iter (± 5966) 3476639 ns/iter (± 4927) 1.00
es/visitor/compare/fold_span_panic 3611167 ns/iter (± 5421) 3608432 ns/iter (± 31006) 1.00
es/lexer/colors 13692 ns/iter (± 47) 13486 ns/iter (± 49) 1.02
es/lexer/angular 6282668 ns/iter (± 17113) 6217117 ns/iter (± 34745) 1.01
es/lexer/backbone 825969 ns/iter (± 4580) 821757 ns/iter (± 8094) 1.01
es/lexer/jquery 4680110 ns/iter (± 2459) 4625432 ns/iter (± 15669) 1.01
es/lexer/jquery mobile 7185444 ns/iter (± 5982) 7134022 ns/iter (± 27536) 1.01
es/lexer/mootools 3683580 ns/iter (± 4194) 3655228 ns/iter (± 26318) 1.01
es/lexer/underscore 686962 ns/iter (± 676) 679060 ns/iter (± 3700) 1.01
es/lexer/three 22223667 ns/iter (± 34775) 21532658 ns/iter (± 94626) 1.03
es/lexer/yui 4175213 ns/iter (± 28998) 4127484 ns/iter (± 33970) 1.01
es/parser/colors 28832 ns/iter (± 63) 28984 ns/iter (± 46) 0.99
es/parser/angular 14176454 ns/iter (± 52872) 14264801 ns/iter (± 65738) 0.99
es/parser/backbone 2117291 ns/iter (± 7905) 2149460 ns/iter (± 7200) 0.99
es/parser/jquery 11602153 ns/iter (± 42703) 11620760 ns/iter (± 57310) 1.00
es/parser/jquery mobile 17659660 ns/iter (± 46544) 17790266 ns/iter (± 56750) 0.99
es/parser/mootools 8844481 ns/iter (± 16659) 8894332 ns/iter (± 15863) 0.99
es/parser/underscore 1826559 ns/iter (± 7906) 1846588 ns/iter (± 10366) 0.99
es/parser/three 48818634 ns/iter (± 151667) 49562238 ns/iter (± 204934) 0.98
es/parser/yui 8840203 ns/iter (± 85491) 8934352 ns/iter (± 27897) 0.99
es/preset-env/usage/builtin_type 143117 ns/iter (± 33161) 143355 ns/iter (± 33046) 1.00
es/preset-env/usage/property 18585 ns/iter (± 35) 18679 ns/iter (± 48) 0.99
es/resolver/typescript 93879809 ns/iter (± 608481) 92786692 ns/iter (± 1694991) 1.01
es/fixer/typescript 65323720 ns/iter (± 466407) 65232006 ns/iter (± 449023) 1.00
es/hygiene/typescript 142943350 ns/iter (± 452248) 142301688 ns/iter (± 729348) 1.00
es/resolver_with_hygiene/typescript 302473587 ns/iter (± 1616950) 299231918 ns/iter (± 1078766) 1.01
es/visitor/base-perf/module_clone 61601 ns/iter (± 265) 61387 ns/iter (± 221) 1.00
es/visitor/base-perf/fold_empty 64923 ns/iter (± 220) 64626 ns/iter (± 489) 1.00
es/visitor/base-perf/fold_noop_impl_all 64948 ns/iter (± 260) 65339 ns/iter (± 245) 0.99
es/visitor/base-perf/fold_noop_impl_vec 65138 ns/iter (± 236) 65270 ns/iter (± 322) 1.00
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 57 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 40 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 114 ns/iter (± 0) 113 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 81 ns/iter (± 0) 80 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_empty 0 ns/iter (± 0) 0 ns/iter (± 0) NaN
es/visitor/base-perf/visit_contains_this 2680 ns/iter (± 40) 2670 ns/iter (± 26) 1.00
es/base/parallel/resolver/typescript 4406967009 ns/iter (± 242975847) 4459443302 ns/iter (± 232743404) 0.99
es/base/parallel/hygiene/typescript 1581319862 ns/iter (± 6680169) 1545252983 ns/iter (± 13725430) 1.02
misc/visitors/time-complexity/time 5 101 ns/iter (± 0) 112 ns/iter (± 3) 0.90
misc/visitors/time-complexity/time 10 263 ns/iter (± 0) 263 ns/iter (± 6) 1
misc/visitors/time-complexity/time 15 501 ns/iter (± 9) 510 ns/iter (± 11) 0.98
misc/visitors/time-complexity/time 20 921 ns/iter (± 4) 947 ns/iter (± 10) 0.97
misc/visitors/time-complexity/time 40 3738 ns/iter (± 21) 3808 ns/iter (± 24) 0.98
misc/visitors/time-complexity/time 60 7795 ns/iter (± 20) 8288 ns/iter (± 486) 0.94
es/full-target/es2016 241978 ns/iter (± 470) 243509 ns/iter (± 774) 0.99
es/full-target/es2017 229699 ns/iter (± 979) 230548 ns/iter (± 1166) 1.00
es/full-target/es2018 219385 ns/iter (± 25780) 218155 ns/iter (± 881) 1.01
es2020_nullish_coalescing 73195 ns/iter (± 375) 73037 ns/iter (± 439) 1.00
es2020_optional_chaining 84430 ns/iter (± 1139) 82929 ns/iter (± 411) 1.02
es2022_class_properties 125275 ns/iter (± 413) 123092 ns/iter (± 305) 1.02
es2018_object_rest_spread 77815 ns/iter (± 358) 76848 ns/iter (± 188) 1.01
es2019_optional_catch_binding 67388 ns/iter (± 291) 67182 ns/iter (± 244) 1.00
es2017_async_to_generator 65871 ns/iter (± 379) 65172 ns/iter (± 70) 1.01
es2016_exponentiation 71037 ns/iter (± 158) 70838 ns/iter (± 196) 1.00
es2015_arrow 75493 ns/iter (± 334) 74373 ns/iter (± 193) 1.02
es2015_block_scoped_fn 70686 ns/iter (± 220) 71758 ns/iter (± 222) 0.99
es2015_block_scoping 135042 ns/iter (± 500) 134829 ns/iter (± 531) 1.00

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

Please sign in to comment.