Skip to content

Commit ff1ad95

Browse files
authoredJul 4, 2023
feat(es/minifier): Compress common sub expressions in sequences (#7587)
1 parent 9cb9f05 commit ff1ad95

File tree

27 files changed

+180
-105
lines changed

27 files changed

+180
-105
lines changed
 

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

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

+81
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,87 @@ impl Optimizer<'_> {
616616
}))
617617
}
618618

619+
(Expr::Seq(left), Expr::Seq(right)) => {
620+
let left_len = left.exprs.len();
621+
let right_len = right.exprs.len();
622+
let min_len = left_len.min(right_len);
623+
624+
let mut idx = 0;
625+
626+
while idx < min_len
627+
&& left.exprs[left_len - idx - 1]
628+
.eq_ignore_span(&right.exprs[right_len - idx - 1])
629+
&& !matches!(
630+
&*left.exprs[left_len - idx - 1],
631+
Expr::Yield(..) | Expr::Fn(..)
632+
)
633+
{
634+
idx += 1;
635+
}
636+
637+
if idx == 0 {
638+
None
639+
} else if idx == left_len {
640+
self.changed = true;
641+
report_change!("conditionals: Reducing similar seq expr in cons");
642+
643+
let mut alt = right.exprs.take();
644+
645+
alt.truncate(alt.len() - idx);
646+
647+
let mut seq = vec![Box::new(Expr::Bin(BinExpr {
648+
span: DUMMY_SP,
649+
left: test.take(),
650+
op: op!("||"),
651+
right: Expr::from_exprs(alt),
652+
}))];
653+
seq.append(&mut left.exprs);
654+
655+
Some(Expr::Seq(SeqExpr {
656+
span: DUMMY_SP,
657+
exprs: seq,
658+
}))
659+
} else if idx == right_len {
660+
self.changed = true;
661+
report_change!("conditionals: Reducing similar seq expr in alt");
662+
663+
let mut cons = left.exprs.take();
664+
665+
cons.truncate(cons.len() - idx);
666+
667+
let mut seq = vec![Box::new(Expr::Bin(BinExpr {
668+
span: DUMMY_SP,
669+
left: test.take(),
670+
op: op!("&&"),
671+
right: Expr::from_exprs(cons),
672+
}))];
673+
seq.append(&mut right.exprs);
674+
675+
Some(Expr::Seq(SeqExpr {
676+
span: DUMMY_SP,
677+
exprs: seq,
678+
}))
679+
} else {
680+
self.changed = true;
681+
report_change!("conditionals: Reducing similar seq expr");
682+
let _ = left.exprs.split_off(left_len - idx);
683+
let mut common = right.exprs.split_off(right_len - idx);
684+
685+
let mut seq = vec![Box::new(Expr::Cond(CondExpr {
686+
span: DUMMY_SP,
687+
test: test.take(),
688+
cons: Box::new(Expr::Seq(left.take())),
689+
alt: Box::new(Expr::Seq(right.take())),
690+
}))];
691+
seq.append(&mut common);
692+
693+
Some(Expr::Seq(SeqExpr {
694+
span: DUMMY_SP,
695+
exprs: seq,
696+
}))
697+
}
698+
}
699+
619700
_ => None,
620701
}
621702
}

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -4208,7 +4208,7 @@
42084208
(parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) && (retainer = parent, j = i);
42094209
}
42104210
for(; node.data !== d;)if (previous = node, !(node = node.next)) return this;
4211-
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);
4211+
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;
42124212
}, treeProto.removeAll = function(data) {
42134213
for(var i = 0, n = data.length; i < n; ++i)this.remove(data[i]);
42144214
return this;
@@ -10067,11 +10067,11 @@
1006710067
return values;
1006810068
}, exports1.interval = function(callback, delay, time) {
1006910069
var t = new Timer, total = delay;
10070-
return null == delay ? (t.restart(callback, delay, time), t) : (t._restart = t.restart, t.restart = function(callback, delay, time) {
10070+
return null == delay || (t._restart = t.restart, t.restart = function(callback, delay, time) {
1007110071
delay = +delay, time = null == time ? now() : +time, t._restart(function tick(elapsed) {
1007210072
elapsed += total, t._restart(tick, total += delay, time), callback(elapsed);
1007310073
}, delay, time);
10074-
}, t.restart(callback, delay, time), t);
10074+
}), t.restart(callback, delay, time), t;
1007510075
}, exports1.isoFormat = formatIso, exports1.isoParse = parseIso, exports1.json = function(input, init) {
1007610076
return fetch(input, init).then(responseJson);
1007710077
}, exports1.lab = lab, exports1.lch = function(l, c, h, opacity) {

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

+6-9
Original file line numberDiff line numberDiff line change
@@ -1059,7 +1059,7 @@
10591059
}
10601060
}, Transformable.prototype.getGlobalScale = function(out) {
10611061
var m = this.transform;
1062-
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);
1062+
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;
10631063
}, Transformable.prototype.transformCoordToLocal = function(x, y) {
10641064
var v2 = [
10651065
x,
@@ -4327,12 +4327,12 @@
43274327
firstCmpt
43284328
] : [], result;
43294329
}
4330-
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({
4330+
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({
43314331
mainType: mainType,
43324332
index: indexOption,
43334333
id: idOption,
43344334
name: nameOption
4335-
}), result);
4335+
})), result;
43364336
}
43374337
function setAttribute(dom, key, value) {
43384338
dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;
@@ -36753,19 +36753,16 @@
3675336753
], xLeft += sizePlusGap), showPrevBtn && (prevBtnPosition = [
3675436754
xLeft,
3675536755
0
36756-
], xLeft += sizePlusGap), showNextBtn && (nextBtnPosition = [
36757-
xRight - controlSize,
36758-
0
36759-
], xRight -= sizePlusGap)) : (showPlayBtn && (playPosition = [
36756+
], xLeft += sizePlusGap)) : (showPlayBtn && (playPosition = [
3676036757
xRight - controlSize,
3676136758
0
3676236759
], xRight -= sizePlusGap), showPrevBtn && (prevBtnPosition = [
3676336760
0,
3676436761
0
36765-
], xLeft += sizePlusGap), showNextBtn && (nextBtnPosition = [
36762+
], xLeft += sizePlusGap)), showNextBtn && (nextBtnPosition = [
3676636763
xRight - controlSize,
3676736764
0
36768-
], xRight -= sizePlusGap));
36765+
], xRight -= sizePlusGap);
3676936766
var axisExtent = [
3677036767
xLeft,
3677136768
xRight

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1522,7 +1522,7 @@
15221522
return out;
15231523
}
15241524
function listWeekdaysImpl(localeSorted, format, index, field) {
1525-
'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 || '');
1525+
'boolean' == typeof localeSorted || (index = format = localeSorted, localeSorted = !1), isNumber(format) && (index = format, format = void 0), format = format || '';
15261526
var i, locale = getLocale(), shift = localeSorted ? locale._week.dow : 0, out = [];
15271527
if (null != index) return get$1(format, (index + shift) % 7, field, 'day');
15281528
for(i = 0; i < 7; i++)out[i] = get$1(format, (i + shift) % 7, field, 'day');

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -7235,15 +7235,15 @@
72357235
var fixed = def.fixed;
72367236
if (!fixed && "=" != node.operator && !node.logical) return finish_walk();
72377237
var eq = "=" == node.operator, value = eq ? node.right : node;
7238-
return is_modified(compressor, tw, node, value, 0) ? finish_walk() : (def.references.push(sym), node.logical || (eq || (def.chained = !0), def.fixed = eq ? function() {
7238+
return is_modified(compressor, tw, node, value, 0) ? finish_walk() : ((def.references.push(sym), node.logical || (eq || (def.chained = !0), def.fixed = eq ? function() {
72397239
return node.right;
72407240
} : function() {
72417241
return make_node(AST_Binary, node, {
72427242
operator: node.operator.slice(0, -1),
72437243
left: fixed instanceof AST_Node ? fixed : fixed(),
72447244
right: node.right
72457245
});
7246-
}), 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);
7246+
}), 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);
72477247
}), def_reduce_vars(AST_Binary, function(tw) {
72487248
if (lazy_op.has(this.operator)) return this.left.walk(tw), push(tw), this.right.walk(tw), pop(tw), !0;
72497249
}), def_reduce_vars(AST_Block, function(tw, descend, compressor) {
@@ -8705,7 +8705,7 @@
87058705
operator: "void",
87068706
expression: expressions[end]
87078707
}), expressions.length = end + 1);
8708-
}(), 0 == end) ? ((self1 = maintain_this_binding(compressor.parent(), compressor.self(), expressions[0])) instanceof AST_Sequence || (self1 = self1.optimize(compressor)), self1) : (self1.expressions = expressions, self1);
8708+
}(), 0 == end) ? (self1 = maintain_this_binding(compressor.parent(), compressor.self(), expressions[0])) instanceof AST_Sequence || (self1 = self1.optimize(compressor)) : self1.expressions = expressions, self1;
87098709
}), AST_Unary.DEFMETHOD("lift_sequences", function(compressor) {
87108710
if (compressor.option("sequences") && this.expression instanceof AST_Sequence) {
87118711
var x = this.expression.expressions.slice(), e = this.clone();

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,7 @@
769769
return this._onChangeCallback(), this;
770770
}, _proto.setFromUnitVectors = function(vFrom, vTo) {
771771
var r = vFrom.dot(vTo) + 1;
772-
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();
772+
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();
773773
}, _proto.angleTo = function(q) {
774774
return 2 * Math.acos(Math.abs(MathUtils.clamp(this.dot(q), -1, 1)));
775775
}, _proto.rotateTowards = function(q, step) {
@@ -1229,7 +1229,7 @@
12291229
var deltaLengthSq = this.center.distanceToSquared(point);
12301230
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;
12311231
}, _proto.getBoundingBox = function(target) {
1232-
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);
1232+
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;
12331233
}, _proto.applyMatrix4 = function(matrix) {
12341234
return this.center.applyMatrix4(matrix), this.radius = this.radius * matrix.getMaxScaleOnAxis(), this;
12351235
}, _proto.translate = function(offset) {
@@ -1700,7 +1700,7 @@
17001700
for(var i = 0; i < arguments.length; i++)this.add(arguments[i]);
17011701
return this;
17021702
}
1703-
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);
1703+
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;
17041704
},
17051705
remove: function(object) {
17061706
if (arguments.length > 1) {

1 commit comments

Comments
 (1)

github-actions[bot] commented on Jul 4, 2023

@github-actions[bot]

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.