Skip to content

Commit 915f747

Browse files
authoredMar 24, 2023
refactor(es/parser): Remove EnumKind to reduce compile time (#7137)
1 parent 4eef553 commit 915f747

File tree

12 files changed

+142
-828
lines changed

12 files changed

+142
-828
lines changed
 

‎.github/workflows/CI.yml

-3
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,6 @@ jobs:
216216
- crate: dbg-swc
217217
os: ubuntu-latest
218218
runner: ubuntu-latest
219-
- crate: enum_kind
220-
os: ubuntu-latest
221-
runner: ubuntu-latest
222219
- crate: from_variant
223220
os: ubuntu-latest
224221
runner: ubuntu-latest

‎Cargo.lock

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

‎crates/enum_kind/Cargo.toml

-22
This file was deleted.

‎crates/enum_kind/src/expand.rs

-213
This file was deleted.

‎crates/enum_kind/src/input.rs

-56
This file was deleted.

‎crates/enum_kind/src/lib.rs

-149
This file was deleted.

‎crates/enum_kind/src/parse.rs

-231
This file was deleted.

‎crates/enum_kind/src/util.rs

-19
This file was deleted.

‎crates/enum_kind/tests/usage.rs

-41
This file was deleted.

‎crates/swc_ecma_parser/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ verify = ["swc_ecma_visit"]
2525

2626
[dependencies]
2727
either = { version = "1.4" }
28-
enum_kind = { version = "0.2.2", path = "../enum_kind" }
2928
lexical = { version = "6.1.0", features = ["power-of-two"] }
3029
num-bigint = "0.4"
3130
serde = { version = "1", features = ["derive"] }

‎crates/swc_ecma_parser/src/lexer/state.rs

+24-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use std::mem::take;
22

3-
use enum_kind::Kind;
43
use swc_common::{BytePos, Span};
54
use tracing::trace;
65

@@ -62,7 +61,7 @@ enum TokenType {
6261
}
6362
impl TokenType {
6463
#[inline]
65-
fn before_expr(self) -> bool {
64+
const fn before_expr(self) -> bool {
6665
match self {
6766
TokenType::JSXName
6867
| TokenType::JSXTagStart
@@ -760,35 +759,49 @@ impl TokenContexts {
760759
/// given point in the program is loosely based on sweet.js' approach.
761760
/// See https://github.com/mozilla/sweet.js/wiki/design
762761
#[repr(u8)]
763-
#[derive(Debug, Clone, Copy, PartialEq, Eq, Kind)]
764-
#[kind(function(is_expr = "bool", preserve_space = "bool"))]
762+
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
765763
pub enum TokenContext {
766764
BraceStmt,
767-
#[kind(is_expr)]
768765
BraceExpr,
769-
#[kind(is_expr)]
770766
TplQuasi,
771767
ParenStmt {
772768
/// Is this `for` loop?
773769
is_for_loop: bool,
774770
},
775-
#[kind(is_expr)]
776771
ParenExpr,
777-
#[kind(is_expr, preserve_space)]
778772
Tpl {
779773
/// Start of a template literal.
780774
start: BytePos,
781775
},
782-
#[kind(is_expr)]
783776
FnExpr,
784-
#[kind(is_expr)]
785777
ClassExpr,
786778
JSXOpeningTag,
787779
JSXClosingTag,
788-
#[kind(is_expr, preserve_space)]
789780
JSXExpr,
790781
}
791782

783+
impl TokenContext {
784+
pub(crate) const fn is_expr(&self) -> bool {
785+
matches!(
786+
self,
787+
Self::BraceExpr
788+
| Self::TplQuasi
789+
| Self::ParenExpr
790+
| Self::Tpl { .. }
791+
| Self::FnExpr
792+
| Self::ClassExpr
793+
| Self::JSXExpr
794+
)
795+
}
796+
797+
pub(crate) const fn preserve_space(&self) -> bool {
798+
match self {
799+
Self::Tpl { .. } | Self::JSXExpr => true,
800+
_ => false,
801+
}
802+
}
803+
}
804+
792805
#[cfg(test)]
793806
pub(crate) fn with_lexer<F, Ret>(
794807
syntax: Syntax,

‎crates/swc_ecma_parser/src/token.rs

+114-67
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use std::{
66
fmt::{self, Debug, Display, Formatter},
77
};
88

9-
use enum_kind::Kind;
109
use num_bigint::BigInt as BigIntValue;
1110
use swc_atoms::{js_word, Atom, JsWord};
1211
use swc_common::{Span, Spanned};
@@ -16,17 +15,14 @@ use swc_ecma_ast::BinaryOp;
1615
pub(crate) use self::{AssignOpToken::*, BinOpToken::*, Keyword::*, Token::*};
1716
use crate::{error::Error, lexer::LexResult};
1817

19-
#[derive(Kind, Clone, PartialEq)]
20-
#[kind(functions(starts_expr = "bool", before_expr = "bool"))]
18+
#[derive(Clone, PartialEq)]
2119
pub enum Token {
2220
/// Identifier, "null", "true", "false".
2321
///
2422
/// Contains `null` and ``
25-
#[kind(delegate)]
2623
Word(Word),
2724

2825
/// '=>'
29-
#[kind(before_expr)]
3026
Arrow,
3127

3228
/// '#'
@@ -38,93 +34,72 @@ pub enum Token {
3834
Dot,
3935

4036
/// '...'
41-
#[kind(before_expr)]
4237
DotDotDot,
4338
/// '!'
44-
#[kind(before_expr, starts_expr)]
4539
Bang,
4640

4741
/// '('
48-
#[kind(before_expr, starts_expr)]
4942
LParen,
5043
/// ')'
5144
RParen,
5245
/// `[`
53-
#[kind(before_expr, starts_expr)]
5446
LBracket,
5547
/// ']'
5648
RBracket,
5749
/// '{'
58-
#[kind(before_expr, starts_expr)]
5950
LBrace,
6051
/// '}'
6152
RBrace,
6253

6354
/// ';'
64-
#[kind(before_expr)]
6555
Semi,
6656
/// ','
67-
#[kind(before_expr)]
6857
Comma,
6958

7059
/// '`'
71-
#[kind(starts_expr)]
7260
BackQuote,
7361
Template {
7462
raw: Atom,
7563
cooked: LexResult<Atom>,
7664
},
7765
/// ':'
78-
#[kind(before_expr)]
7966
Colon,
8067
/// '::'
81-
#[kind(before_expr)]
8268
ColonColon,
8369
///
84-
#[kind(delegate)]
8570
BinOp(BinOpToken),
8671
///
87-
#[kind(before_expr)]
8872
AssignOp(AssignOpToken),
8973

9074
/// '${'
91-
#[kind(before_expr, starts_expr)]
9275
DollarLBrace,
9376

9477
/// '?'
95-
#[kind(before_expr)]
9678
QuestionMark,
9779

9880
/// `++`
99-
#[kind(before_expr, starts_expr)]
10081
PlusPlus,
10182
/// `--`
102-
#[kind(before_expr, starts_expr)]
10383
MinusMinus,
10484

10585
/// `~`
106-
#[kind(before_expr, starts_expr)]
10786
Tilde,
10887

10988
/// String literal. Span of this token contains quote.
110-
#[kind(starts_expr)]
11189
Str {
11290
value: JsWord,
11391
raw: Atom,
11492
},
11593

11694
/// Regexp literal.
117-
#[kind(starts_expr)]
11895
Regex(Atom, Atom),
11996

12097
/// TODO: Make Num as enum and separate decimal, binary, ..etc
121-
#[kind(starts_expr)]
12298
Num {
12399
value: f64,
124100
raw: Atom,
125101
},
126102

127-
#[kind(starts_expr)]
128103
BigInt {
129104
value: Box<BigIntValue>,
130105
raw: Atom,
@@ -133,20 +108,66 @@ pub enum Token {
133108
JSXName {
134109
name: JsWord,
135110
},
136-
#[kind(before_expr)]
137111
JSXText {
138112
raw: Atom,
139113
},
140-
#[kind(starts_expr)]
141114
JSXTagStart,
142115
JSXTagEnd,
143116

144117
Shebang(Atom),
145118
Error(Error),
146119
}
147120

148-
#[derive(Kind, Debug, Clone, Copy, Eq, PartialEq, Hash)]
149-
#[kind(functions(starts_expr = "bool"))]
121+
impl Token {
122+
pub(crate) const fn before_expr(&self) -> bool {
123+
match self {
124+
Self::Word(w) => w.before_expr(),
125+
Self::BinOp(w) => w.before_expr(),
126+
Self::Arrow
127+
| Self::DotDotDot
128+
| Self::Bang
129+
| Self::LParen
130+
| Self::LBrace
131+
| Self::LBracket
132+
| Self::Semi
133+
| Self::Comma
134+
| Self::Colon
135+
| Self::ColonColon
136+
| Self::AssignOp(..)
137+
| Self::DollarLBrace
138+
| Self::QuestionMark
139+
| Self::PlusPlus
140+
| Self::MinusMinus
141+
| Self::Tilde
142+
| Self::JSXText { .. } => true,
143+
_ => false,
144+
}
145+
}
146+
147+
pub(crate) const fn starts_expr(&self) -> bool {
148+
match self {
149+
Self::Word(w) => w.starts_expr(),
150+
Self::BinOp(w) => w.starts_expr(),
151+
Self::Bang
152+
| Self::LParen
153+
| Self::LBrace
154+
| Self::LBracket
155+
| Self::BackQuote
156+
| Self::DollarLBrace
157+
| Self::PlusPlus
158+
| Self::MinusMinus
159+
| Self::Tilde
160+
| Self::Str { .. }
161+
| Self::Regex(..)
162+
| Self::Num { .. }
163+
| Self::BigInt { .. }
164+
| Self::JSXTagStart => true,
165+
_ => false,
166+
}
167+
}
168+
}
169+
170+
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
150171
pub enum BinOpToken {
151172
/// `==`
152173
EqEq,
@@ -172,10 +193,8 @@ pub enum BinOpToken {
172193
ZeroFillRShift,
173194

174195
/// `+`
175-
#[kind(starts_expr)]
176196
Add,
177197
/// `-`
178-
#[kind(starts_expr)]
179198
Sub,
180199
/// `*`
181200
Mul,
@@ -210,7 +229,11 @@ pub enum BinOpToken {
210229
}
211230

212231
impl BinOpToken {
213-
pub const fn before_expr(self) -> bool {
232+
pub(crate) const fn starts_expr(&self) -> bool {
233+
matches!(self, Self::Add | Self::Sub)
234+
}
235+
236+
pub(crate) const fn before_expr(self) -> bool {
214237
true
215238
}
216239
}
@@ -230,23 +253,33 @@ impl Spanned for TokenAndSpan {
230253
}
231254
}
232255

233-
#[derive(Kind, Clone, PartialEq, Eq, Hash)]
234-
#[kind(functions(starts_expr = "bool", before_expr = "bool"))]
256+
#[derive(Clone, PartialEq, Eq, Hash)]
235257
pub enum Word {
236-
#[kind(delegate)]
237258
Keyword(Keyword),
238259

239-
#[kind(starts_expr)]
240260
Null,
241-
#[kind(starts_expr)]
242261
True,
243-
#[kind(starts_expr)]
244262
False,
245263

246-
#[kind(starts_expr)]
247264
Ident(JsWord),
248265
}
249266

267+
impl Word {
268+
pub(crate) const fn before_expr(&self) -> bool {
269+
match self {
270+
Word::Keyword(k) => k.before_expr(),
271+
_ => false,
272+
}
273+
}
274+
275+
pub(crate) const fn starts_expr(&self) -> bool {
276+
match self {
277+
Word::Keyword(k) => k.starts_expr(),
278+
_ => true,
279+
}
280+
}
281+
}
282+
250283
impl From<JsWord> for Word {
251284
fn from(i: JsWord) -> Self {
252285
match i {
@@ -377,40 +410,30 @@ impl Debug for Word {
377410
}
378411

379412
/// Keywords
380-
#[derive(Kind, Clone, Copy, PartialEq, Eq, Hash)]
381-
#[kind(function(before_expr = "bool", starts_expr = "bool"))]
413+
#[derive(Clone, Copy, PartialEq, Eq, Hash)]
382414
pub enum Keyword {
383415
/// Spec says this might be identifier.
384-
#[kind(before_expr, starts_expr)]
385416
Await,
386-
387417
Break,
388-
#[kind(before_expr)]
389418
Case,
390419
Catch,
391420
Continue,
392421
Debugger,
393-
#[kind(before_expr)]
394422
Default_,
395-
#[kind(before_expr)]
396423
Do,
397-
#[kind(before_expr)]
398424
Else,
399425

400426
Finally,
401427
For,
402428

403-
#[kind(starts_expr)]
404429
Function,
405430

406431
If,
407432

408-
#[kind(before_expr)]
409433
Return,
410434

411435
Switch,
412436

413-
#[kind(before_expr, starts_expr)]
414437
Throw,
415438

416439
Try,
@@ -420,44 +443,68 @@ pub enum Keyword {
420443
While,
421444
With,
422445

423-
#[kind(before_expr, starts_expr)]
424446
New,
425-
#[kind(starts_expr)]
426447
This,
427-
#[kind(starts_expr)]
428448
Super,
429449

430-
#[kind(starts_expr)]
431450
Class,
432451

433-
#[kind(before_expr)]
434452
Extends,
435453

436454
Export,
437-
#[kind(starts_expr)]
438455
Import,
439456

440457
/// Spec says this might be identifier.
441-
#[kind(before_expr, starts_expr)]
442458
Yield,
443459

444-
#[kind(before_expr)]
445460
In,
446-
#[kind(before_expr)]
447461
InstanceOf,
448-
449-
#[kind(before_expr, starts_expr)]
450462
TypeOf,
451-
452-
#[kind(before_expr, starts_expr)]
453463
Void,
454-
455-
#[kind(before_expr, starts_expr)]
456464
Delete,
457465
}
458466

459467
impl Keyword {
460-
pub(crate) fn into_js_word(self) -> JsWord {
468+
pub(crate) const fn before_expr(&self) -> bool {
469+
matches!(
470+
self,
471+
Self::Await
472+
| Self::Case
473+
| Self::Default_
474+
| Self::Do
475+
| Self::Else
476+
| Self::Return
477+
| Self::Throw
478+
| Self::New
479+
| Self::Extends
480+
| Self::Yield
481+
| Self::In
482+
| Self::InstanceOf
483+
| Self::TypeOf
484+
| Self::Void
485+
| Self::Delete
486+
)
487+
}
488+
489+
pub(crate) const fn starts_expr(&self) -> bool {
490+
matches!(
491+
self,
492+
Self::Await
493+
| Self::Function
494+
| Self::Throw
495+
| Self::New
496+
| Self::This
497+
| Self::Super
498+
| Self::Class
499+
| Self::Import
500+
| Self::Yield
501+
| Self::TypeOf
502+
| Self::Void
503+
| Self::Delete
504+
)
505+
}
506+
507+
pub(crate) const fn into_js_word(self) -> JsWord {
461508
match self {
462509
Await => js_word!("await"),
463510
Break => js_word!("break"),

1 commit comments

Comments
 (1)

github-actions[bot] commented on Mar 24, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 915f747 Previous: b13eb4c Ratio
es/full/bugs-1 300846 ns/iter (± 7717) 315323 ns/iter (± 6430) 0.95
es/full/minify/libraries/antd 1479115392 ns/iter (± 12787975) 1569610948 ns/iter (± 19467873) 0.94
es/full/minify/libraries/d3 287499574 ns/iter (± 7257839) 299419103 ns/iter (± 4311538) 0.96
es/full/minify/libraries/echarts 1146739455 ns/iter (± 13730371) 1202365221 ns/iter (± 8302934) 0.95
es/full/minify/libraries/jquery 89522581 ns/iter (± 584030) 91587950 ns/iter (± 724273) 0.98
es/full/minify/libraries/lodash 103899708 ns/iter (± 1436847) 106031434 ns/iter (± 2093594) 0.98
es/full/minify/libraries/moment 51509933 ns/iter (± 267214) 53049652 ns/iter (± 678799) 0.97
es/full/minify/libraries/react 18863355 ns/iter (± 134540) 19287456 ns/iter (± 176139) 0.98
es/full/minify/libraries/terser 237453491 ns/iter (± 4829318) 247454291 ns/iter (± 1879704) 0.96
es/full/minify/libraries/three 415375516 ns/iter (± 3835100) 433871947 ns/iter (± 4225323) 0.96
es/full/minify/libraries/typescript 2875622091 ns/iter (± 13249709) 2947579584 ns/iter (± 10990184) 0.98
es/full/minify/libraries/victory 620840968 ns/iter (± 5830673) 660403306 ns/iter (± 9229098) 0.94
es/full/minify/libraries/vue 127723764 ns/iter (± 1178946) 133399476 ns/iter (± 1042471) 0.96
es/full/codegen/es3 28433 ns/iter (± 147) 28776 ns/iter (± 95) 0.99
es/full/codegen/es5 28449 ns/iter (± 173) 28920 ns/iter (± 151) 0.98
es/full/codegen/es2015 28179 ns/iter (± 192) 28864 ns/iter (± 91) 0.98
es/full/codegen/es2016 28221 ns/iter (± 124) 28858 ns/iter (± 84) 0.98
es/full/codegen/es2017 28213 ns/iter (± 152) 28854 ns/iter (± 74) 0.98
es/full/codegen/es2018 28094 ns/iter (± 106) 28927 ns/iter (± 66) 0.97
es/full/codegen/es2019 28434 ns/iter (± 167) 28865 ns/iter (± 72) 0.99
es/full/codegen/es2020 28034 ns/iter (± 158) 28907 ns/iter (± 74) 0.97
es/full/all/es3 181201651 ns/iter (± 2078411) 185648491 ns/iter (± 2928418) 0.98
es/full/all/es5 175080985 ns/iter (± 1459635) 175159197 ns/iter (± 3557475) 1.00
es/full/all/es2015 136730915 ns/iter (± 2316395) 139310574 ns/iter (± 2786085) 0.98
es/full/all/es2016 134422588 ns/iter (± 1460800) 138231538 ns/iter (± 1628856) 0.97
es/full/all/es2017 132109563 ns/iter (± 1691235) 137224712 ns/iter (± 2081055) 0.96
es/full/all/es2018 126501463 ns/iter (± 1147883) 132559155 ns/iter (± 2051957) 0.95
es/full/all/es2019 125658841 ns/iter (± 2124096) 131027966 ns/iter (± 2003315) 0.96
es/full/all/es2020 119626373 ns/iter (± 1932720) 121990756 ns/iter (± 1829782) 0.98
es/full/parser 526675 ns/iter (± 7959) 538233 ns/iter (± 9156) 0.98
es/full/base/fixer 22601 ns/iter (± 82) 22704 ns/iter (± 60) 1.00
es/full/base/resolver_and_hygiene 82324 ns/iter (± 225) 82992 ns/iter (± 105) 0.99
serialization of ast node 124 ns/iter (± 0) 124 ns/iter (± 1) 1
serialization of serde 125 ns/iter (± 0) 126 ns/iter (± 0) 0.99
css/minify/libraries/bootstrap 28358977 ns/iter (± 148465) 29049545 ns/iter (± 118867) 0.98
css/visitor/compare/clone 2093499 ns/iter (± 7153) 2097823 ns/iter (± 20488) 1.00
css/visitor/compare/visit_mut_span 2311648 ns/iter (± 7671) 2265959 ns/iter (± 8142) 1.02
css/visitor/compare/visit_mut_span_panic 2357921 ns/iter (± 13274) 2327552 ns/iter (± 5191) 1.01
css/visitor/compare/fold_span 3081334 ns/iter (± 27727) 3034099 ns/iter (± 18924) 1.02
css/visitor/compare/fold_span_panic 3183882 ns/iter (± 40105) 3232526 ns/iter (± 21977) 0.98
css/lexer/bootstrap_5_1_3 5153914 ns/iter (± 15836) 5180354 ns/iter (± 4826) 0.99
css/lexer/foundation_6_7_4 4343933 ns/iter (± 3025) 4368360 ns/iter (± 22958) 0.99
css/lexer/tailwind_3_1_1 824702 ns/iter (± 483) 827535 ns/iter (± 550) 1.00
css/parser/bootstrap_5_1_3 21856830 ns/iter (± 244201) 22250375 ns/iter (± 165055) 0.98
css/parser/foundation_6_7_4 17453385 ns/iter (± 70633) 17741174 ns/iter (± 121932) 0.98
css/parser/tailwind_3_1_1 3330771 ns/iter (± 2467) 3382022 ns/iter (± 5396) 0.98
es/codegen/colors 322669 ns/iter (± 183813) 328732 ns/iter (± 184084) 0.98
es/codegen/large 1239053 ns/iter (± 638766) 1171946 ns/iter (± 594834) 1.06
es/codegen/with-parser/colors 48246 ns/iter (± 319) 47789 ns/iter (± 448) 1.01
es/codegen/with-parser/large 529593 ns/iter (± 1572) 522765 ns/iter (± 1366) 1.01
es/minify/libraries/antd 1320451245 ns/iter (± 59050614) 1372840843 ns/iter (± 19733567) 0.96
es/minify/libraries/d3 248806777 ns/iter (± 2009562) 256952643 ns/iter (± 1768696) 0.97
es/minify/libraries/echarts 1002208829 ns/iter (± 12443495) 1051914303 ns/iter (± 10652007) 0.95
es/minify/libraries/jquery 77510425 ns/iter (± 706394) 79214024 ns/iter (± 390762) 0.98
es/minify/libraries/lodash 93468395 ns/iter (± 1378017) 94427887 ns/iter (± 760874) 0.99
es/minify/libraries/moment 45259015 ns/iter (± 301338) 45928014 ns/iter (± 526926) 0.99
es/minify/libraries/react 16740688 ns/iter (± 181879) 17128136 ns/iter (± 161710) 0.98
es/minify/libraries/terser 201087256 ns/iter (± 2315661) 211126949 ns/iter (± 1815042) 0.95
es/minify/libraries/three 344634466 ns/iter (± 8708344) 364691696 ns/iter (± 12567378) 0.95
es/minify/libraries/typescript 2500569629 ns/iter (± 25684466) 2577839705 ns/iter (± 13513438) 0.97
es/minify/libraries/victory 558526829 ns/iter (± 30863092) 604721027 ns/iter (± 6666373) 0.92
es/minify/libraries/vue 115340637 ns/iter (± 3313671) 121115283 ns/iter (± 2878289) 0.95
es/visitor/compare/clone 2344367 ns/iter (± 11848) 2333069 ns/iter (± 11452) 1.00
es/visitor/compare/visit_mut_span 2756721 ns/iter (± 64434) 2708603 ns/iter (± 6975) 1.02
es/visitor/compare/visit_mut_span_panic 2725224 ns/iter (± 18663) 2733576 ns/iter (± 6323) 1.00
es/visitor/compare/fold_span 3804709 ns/iter (± 14955) 3840092 ns/iter (± 8983) 0.99
es/visitor/compare/fold_span_panic 3913463 ns/iter (± 17338) 3988930 ns/iter (± 16142) 0.98
es/lexer/colors 15318 ns/iter (± 163) 15315 ns/iter (± 11) 1.00
es/lexer/angular 7491391 ns/iter (± 39109) 7374241 ns/iter (± 5203) 1.02
es/lexer/backbone 965758 ns/iter (± 3765) 982291 ns/iter (± 638) 0.98
es/lexer/jquery 5413912 ns/iter (± 25559) 5536021 ns/iter (± 1408) 0.98
es/lexer/jquery mobile 8434889 ns/iter (± 41020) 8496848 ns/iter (± 3012) 0.99
es/lexer/mootools 4273826 ns/iter (± 21298) 4392421 ns/iter (± 21092) 0.97
es/lexer/underscore 815093 ns/iter (± 4199) 826173 ns/iter (± 2193) 0.99
es/lexer/three 25527760 ns/iter (± 119339) 26077684 ns/iter (± 9913) 0.98
es/lexer/yui 4643644 ns/iter (± 13650) 4653886 ns/iter (± 3426) 1.00
es/parser/colors 28858 ns/iter (± 186) 29477 ns/iter (± 18) 0.98
es/parser/angular 14869059 ns/iter (± 135090) 15677874 ns/iter (± 220113) 0.95
es/parser/backbone 2171435 ns/iter (± 19624) 2247605 ns/iter (± 14429) 0.97
es/parser/jquery 11860099 ns/iter (± 116541) 12548874 ns/iter (± 119709) 0.95
es/parser/jquery mobile 18716421 ns/iter (± 227420) 20327311 ns/iter (± 297493) 0.92
es/parser/mootools 9135580 ns/iter (± 33224) 9376481 ns/iter (± 53397) 0.97
es/parser/underscore 1868152 ns/iter (± 10567) 1896791 ns/iter (± 11096) 0.98
es/parser/three 55644755 ns/iter (± 148088) 57569070 ns/iter (± 129948) 0.97
es/parser/yui 9089341 ns/iter (± 40675) 9461557 ns/iter (± 178489) 0.96
es/preset-env/usage/builtin_type 141405 ns/iter (± 34190) 142411 ns/iter (± 34306) 0.99
es/preset-env/usage/property 20605 ns/iter (± 82) 21078 ns/iter (± 135) 0.98
es/resolver/typescript 115072322 ns/iter (± 1998078) 120544105 ns/iter (± 3341382) 0.95
es/fixer/typescript 80114862 ns/iter (± 2926722) 81278461 ns/iter (± 822772) 0.99
es/hygiene/typescript 166935246 ns/iter (± 1985004) 174011916 ns/iter (± 1973410) 0.96
es/resolver_with_hygiene/typescript 313866224 ns/iter (± 3338626) 316261369 ns/iter (± 3063587) 0.99
es/visitor/base-perf/module_clone 80601 ns/iter (± 1854) 79819 ns/iter (± 1637) 1.01
es/visitor/base-perf/fold_empty 89540 ns/iter (± 1598) 88782 ns/iter (± 1287) 1.01
es/visitor/base-perf/fold_noop_impl_all 91247 ns/iter (± 1138) 90342 ns/iter (± 1836) 1.01
es/visitor/base-perf/fold_noop_impl_vec 91614 ns/iter (± 1028) 91073 ns/iter (± 1127) 1.01
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 56 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_unboxed_clone 54 ns/iter (± 0) 54 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 100 ns/iter (± 0) 101 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 97 ns/iter (± 0) 98 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_contains_this 3333 ns/iter (± 63) 3476 ns/iter (± 93) 0.96
es/base/parallel/resolver/typescript 6877933065 ns/iter (± 424645495) 6352565857 ns/iter (± 354731913) 1.08
es/base/parallel/hygiene/typescript 1966309984 ns/iter (± 17762635) 2009172220 ns/iter (± 28090662) 0.98
misc/visitors/time-complexity/time 5 89 ns/iter (± 0) 93 ns/iter (± 0) 0.96
misc/visitors/time-complexity/time 10 305 ns/iter (± 4) 308 ns/iter (± 3) 0.99
misc/visitors/time-complexity/time 15 599 ns/iter (± 4) 678 ns/iter (± 1) 0.88
misc/visitors/time-complexity/time 20 1163 ns/iter (± 20) 1158 ns/iter (± 17) 1.00
misc/visitors/time-complexity/time 40 5733 ns/iter (± 113) 5738 ns/iter (± 44) 1.00
misc/visitors/time-complexity/time 60 12969 ns/iter (± 73) 12946 ns/iter (± 105) 1.00
es/full-target/es2016 249797 ns/iter (± 1979) 247960 ns/iter (± 579) 1.01
es/full-target/es2017 239908 ns/iter (± 1741) 240579 ns/iter (± 436) 1.00
es/full-target/es2018 227521 ns/iter (± 1120) 230277 ns/iter (± 429) 0.99
es2020_nullish_coalescing 90109 ns/iter (± 545) 91904 ns/iter (± 510) 0.98
es2020_optional_chaining 122938 ns/iter (± 728) 124121 ns/iter (± 520) 0.99
es2022_class_properties 144523 ns/iter (± 973) 146341 ns/iter (± 147) 0.99
es2018_object_rest_spread 92332 ns/iter (± 505) 95183 ns/iter (± 213) 0.97
es2019_optional_catch_binding 82453 ns/iter (± 592) 84737 ns/iter (± 133) 0.97
es2017_async_to_generator 83182 ns/iter (± 877) 85099 ns/iter (± 191) 0.98
es2016_exponentiation 87628 ns/iter (± 329) 89437 ns/iter (± 270) 0.98
es2015_arrow 91398 ns/iter (± 582) 93670 ns/iter (± 210) 0.98
es2015_block_scoped_fn 89338 ns/iter (± 487) 91314 ns/iter (± 183) 0.98
es2015_block_scoping 167559 ns/iter (± 507) 168548 ns/iter (± 201) 0.99

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

Please sign in to comment.