Skip to content

Commit 6426928

Browse files
authoredJun 18, 2024··
perf(es/lexer): Optimize lexer (#9075)
**Description:** - `TokenContext` is now 1 byte. - `read_word_with` now uses `&dyn` instead of `impl FnOnce`.
1 parent ddaafe0 commit 6426928

File tree

3 files changed

+46
-53
lines changed

3 files changed

+46
-53
lines changed
 

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ impl<'a> Lexer<'a> {
754754
/// character.
755755
fn read_word_with(
756756
&mut self,
757-
convert: impl FnOnce(&str) -> Option<Word>,
757+
convert: &dyn Fn(&str) -> Option<Word>,
758758
) -> LexResult<Option<Token>> {
759759
debug_assert!(self.cur().is_some());
760760

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

+24-31
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ pub(super) struct State {
3232
pub cur_line: usize,
3333
pub line_start: BytePos,
3434
pub prev_hi: BytePos,
35+
pub tpl_start: BytePos,
3536

3637
context: TokenContexts,
3738
syntax: Syntax,
@@ -323,11 +324,9 @@ impl<'a> Iterator for Lexer<'a> {
323324
}
324325
}
325326

326-
if let Some(TokenContext::Tpl {
327-
start: start_pos_of_tpl,
328-
}) = self.state.context.current()
329-
{
330-
return self.read_tmpl_token(start_pos_of_tpl).map(Some);
327+
if let Some(TokenContext::Tpl {}) = self.state.context.current() {
328+
let start = self.state.tpl_start;
329+
return self.read_tmpl_token(start).map(Some);
331330
}
332331

333332
self.read_token()
@@ -373,16 +372,17 @@ impl State {
373372
State {
374373
is_expr_allowed: true,
375374
next_regexp: None,
376-
is_first: true,
377375
had_line_break: false,
378376
had_line_break_before_last: false,
379-
prev_hi: start_pos,
380-
context,
381-
token_type: None,
377+
is_first: true,
382378
start: BytePos(0),
383-
line_start: BytePos(0),
384379
cur_line: 1,
380+
line_start: BytePos(0),
381+
prev_hi: start_pos,
382+
tpl_start: BytePos::DUMMY,
383+
context,
385384
syntax,
385+
token_type: None,
386386
}
387387
}
388388
}
@@ -431,30 +431,26 @@ impl State {
431431
let prev = self.token_type.take();
432432
self.token_type = Some(TokenType::from(next));
433433

434-
self.is_expr_allowed = Self::is_expr_allowed_on_next(
435-
&mut self.context,
436-
self.syntax,
437-
prev,
438-
start,
439-
next,
440-
self.had_line_break,
441-
self.had_line_break_before_last,
442-
self.is_expr_allowed,
443-
);
434+
self.is_expr_allowed = self.is_expr_allowed_on_next(prev, start, next);
444435
}
445436

446437
/// `is_expr_allowed`: previous value.
447438
/// `start`: start of newly produced token.
448439
fn is_expr_allowed_on_next(
449-
context: &mut TokenContexts,
450-
syntax: Syntax,
440+
&mut self,
451441
prev: Option<TokenType>,
452442
start: BytePos,
453443
next: TokenKind,
454-
had_line_break: bool,
455-
had_line_break_before_last: bool,
456-
is_expr_allowed: bool,
457444
) -> bool {
445+
let State {
446+
ref mut context,
447+
had_line_break,
448+
had_line_break_before_last,
449+
is_expr_allowed,
450+
syntax,
451+
..
452+
} = *self;
453+
458454
let is_next_keyword = matches!(next, TokenKind::Word(WordKind::Keyword(..)));
459455

460456
if is_next_keyword && prev == Some(TokenType::Dot) {
@@ -612,7 +608,8 @@ impl State {
612608
if let Some(TokenContext::Tpl { .. }) = context.current() {
613609
context.pop();
614610
} else {
615-
context.push(TokenContext::Tpl { start });
611+
self.tpl_start = start;
612+
context.push(TokenContext::Tpl);
616613
}
617614
false
618615
}
@@ -761,7 +758,6 @@ impl TokenContexts {
761758
/// The algorithm used to determine whether a regexp can appear at a
762759
/// given point in the program is loosely based on sweet.js' approach.
763760
/// See https://github.com/mozilla/sweet.js/wiki/design
764-
#[repr(u8)]
765761
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
766762
pub enum TokenContext {
767763
BraceStmt,
@@ -772,10 +768,7 @@ pub enum TokenContext {
772768
is_for_loop: bool,
773769
},
774770
ParenExpr,
775-
Tpl {
776-
/// Start of a template literal.
777-
start: BytePos,
778-
},
771+
Tpl,
779772
FnExpr,
780773
ClassExpr,
781774
JSXOpeningTag,

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

+21-21
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const ERR: ByteHandler = Some(|lexer| {
6363
const IDN: ByteHandler = Some(|lexer| lexer.read_ident_unknown().map(Some));
6464

6565
const L_A: ByteHandler = Some(|lexer| {
66-
lexer.read_word_with(|s| match s {
66+
lexer.read_word_with(&|s| match s {
6767
"abstract" => Some(Word::Ident(IdentLike::Known(KnownIdent::Abstract))),
6868
"as" => Some(Word::Ident(IdentLike::Known(KnownIdent::As))),
6969
"await" => Some(Word::Keyword(Keyword::Await)),
@@ -77,7 +77,7 @@ const L_A: ByteHandler = Some(|lexer| {
7777
});
7878

7979
const L_B: ByteHandler = Some(|lexer| {
80-
lexer.read_word_with(|s| match s {
80+
lexer.read_word_with(&|s| match s {
8181
"break" => Some(Word::Keyword(Keyword::Break)),
8282
"boolean" => Some(Word::Ident(IdentLike::Known(KnownIdent::Boolean))),
8383
"bigint" => Some(Word::Ident(IdentLike::Known(KnownIdent::Bigint))),
@@ -86,7 +86,7 @@ const L_B: ByteHandler = Some(|lexer| {
8686
});
8787

8888
const L_C: ByteHandler = Some(|lexer| {
89-
lexer.read_word_with(|s| match s {
89+
lexer.read_word_with(&|s| match s {
9090
"case" => Some(Word::Keyword(Keyword::Case)),
9191
"catch" => Some(Word::Keyword(Keyword::Catch)),
9292
"class" => Some(Word::Keyword(Keyword::Class)),
@@ -97,7 +97,7 @@ const L_C: ByteHandler = Some(|lexer| {
9797
});
9898

9999
const L_D: ByteHandler = Some(|lexer| {
100-
lexer.read_word_with(|s| match s {
100+
lexer.read_word_with(&|s| match s {
101101
"debugger" => Some(Word::Keyword(Keyword::Debugger)),
102102
"default" => Some(Word::Keyword(Keyword::Default_)),
103103
"delete" => Some(Word::Keyword(Keyword::Delete)),
@@ -108,7 +108,7 @@ const L_D: ByteHandler = Some(|lexer| {
108108
});
109109

110110
const L_E: ByteHandler = Some(|lexer| {
111-
lexer.read_word_with(|s| match s {
111+
lexer.read_word_with(&|s| match s {
112112
"else" => Some(Word::Keyword(Keyword::Else)),
113113
"enum" => Some(Word::Ident(IdentLike::Known(KnownIdent::Enum))),
114114
"export" => Some(Word::Keyword(Keyword::Export)),
@@ -118,7 +118,7 @@ const L_E: ByteHandler = Some(|lexer| {
118118
});
119119

120120
const L_F: ByteHandler = Some(|lexer| {
121-
lexer.read_word_with(|s| match s {
121+
lexer.read_word_with(&|s| match s {
122122
"false" => Some(Word::False),
123123
"finally" => Some(Word::Keyword(Keyword::Finally)),
124124
"for" => Some(Word::Keyword(Keyword::For)),
@@ -129,7 +129,7 @@ const L_F: ByteHandler = Some(|lexer| {
129129
});
130130

131131
const L_G: ByteHandler = Some(|lexer| {
132-
lexer.read_word_with(|s| match s {
132+
lexer.read_word_with(&|s| match s {
133133
"global" => Some(Word::Ident(IdentLike::Known(KnownIdent::Global))),
134134
"get" => Some(Word::Ident(IdentLike::Known(KnownIdent::Get))),
135135
_ => None,
@@ -139,7 +139,7 @@ const L_G: ByteHandler = Some(|lexer| {
139139
const L_H: ByteHandler = IDN;
140140

141141
const L_I: ByteHandler = Some(|lexer| {
142-
lexer.read_word_with(|s| match s {
142+
lexer.read_word_with(&|s| match s {
143143
"if" => Some(Word::Keyword(Keyword::If)),
144144
"import" => Some(Word::Keyword(Keyword::Import)),
145145
"in" => Some(Word::Keyword(Keyword::In)),
@@ -156,28 +156,28 @@ const L_I: ByteHandler = Some(|lexer| {
156156
const L_J: ByteHandler = IDN;
157157

158158
const L_K: ByteHandler = Some(|lexer| {
159-
lexer.read_word_with(|s| match s {
159+
lexer.read_word_with(&|s| match s {
160160
"keyof" => Some(Word::Ident(IdentLike::Known(KnownIdent::Keyof))),
161161
_ => None,
162162
})
163163
});
164164

165165
const L_L: ByteHandler = Some(|lexer| {
166-
lexer.read_word_with(|s| match s {
166+
lexer.read_word_with(&|s| match s {
167167
"let" => Some(Word::Keyword(Keyword::Let)),
168168
_ => None,
169169
})
170170
});
171171

172172
const L_M: ByteHandler = Some(|lexer| {
173-
lexer.read_word_with(|s| match s {
173+
lexer.read_word_with(&|s| match s {
174174
"meta" => Some(Word::Ident(IdentLike::Known(KnownIdent::Meta))),
175175
_ => None,
176176
})
177177
});
178178

179179
const L_N: ByteHandler = Some(|lexer| {
180-
lexer.read_word_with(|s| match s {
180+
lexer.read_word_with(&|s| match s {
181181
"new" => Some(Word::Keyword(Keyword::New)),
182182
"null" => Some(Word::Null),
183183
"number" => Some(Word::Ident(IdentLike::Known(KnownIdent::Number))),
@@ -188,15 +188,15 @@ const L_N: ByteHandler = Some(|lexer| {
188188
});
189189

190190
const L_O: ByteHandler = Some(|lexer| {
191-
lexer.read_word_with(|s| match s {
191+
lexer.read_word_with(&|s| match s {
192192
"of" => Some(Word::Ident(IdentLike::Known(KnownIdent::Of))),
193193
"object" => Some(Word::Ident(IdentLike::Known(KnownIdent::Object))),
194194
_ => None,
195195
})
196196
});
197197

198198
const L_P: ByteHandler = Some(|lexer| {
199-
lexer.read_word_with(|s| match s {
199+
lexer.read_word_with(&|s| match s {
200200
"public" => Some(Word::Ident(IdentLike::Known(KnownIdent::Public))),
201201
"package" => Some(Word::Ident(IdentLike::Known(KnownIdent::Package))),
202202
"protected" => Some(Word::Ident(IdentLike::Known(KnownIdent::Protected))),
@@ -208,7 +208,7 @@ const L_P: ByteHandler = Some(|lexer| {
208208
const L_Q: ByteHandler = IDN;
209209

210210
const L_R: ByteHandler = Some(|lexer| {
211-
lexer.read_word_with(|s| match s {
211+
lexer.read_word_with(&|s| match s {
212212
"return" => Some(Word::Keyword(Keyword::Return)),
213213
"readonly" => Some(Word::Ident(IdentLike::Known(KnownIdent::Readonly))),
214214
"require" => Some(Word::Ident(IdentLike::Known(KnownIdent::Require))),
@@ -217,7 +217,7 @@ const L_R: ByteHandler = Some(|lexer| {
217217
});
218218

219219
const L_S: ByteHandler = Some(|lexer| {
220-
lexer.read_word_with(|s| match s {
220+
lexer.read_word_with(&|s| match s {
221221
"super" => Some(Word::Keyword(Keyword::Super)),
222222
"static" => Some(Word::Ident(IdentLike::Known(KnownIdent::Static))),
223223
"switch" => Some(Word::Keyword(Keyword::Switch)),
@@ -230,7 +230,7 @@ const L_S: ByteHandler = Some(|lexer| {
230230
});
231231

232232
const L_T: ByteHandler = Some(|lexer| {
233-
lexer.read_word_with(|s| match s {
233+
lexer.read_word_with(&|s| match s {
234234
"this" => Some(Word::Keyword(Keyword::This)),
235235
"throw" => Some(Word::Keyword(Keyword::Throw)),
236236
"true" => Some(Word::True),
@@ -243,7 +243,7 @@ const L_T: ByteHandler = Some(|lexer| {
243243
});
244244

245245
const L_U: ByteHandler = Some(|lexer| {
246-
lexer.read_word_with(|s| match s {
246+
lexer.read_word_with(&|s| match s {
247247
"using" => Some(Word::Ident(IdentLike::Known(KnownIdent::Using))),
248248
"unique" => Some(Word::Ident(IdentLike::Known(KnownIdent::Unique))),
249249
"undefined" => Some(Word::Ident(IdentLike::Known(KnownIdent::Undefined))),
@@ -253,15 +253,15 @@ const L_U: ByteHandler = Some(|lexer| {
253253
});
254254

255255
const L_V: ByteHandler = Some(|lexer| {
256-
lexer.read_word_with(|s| match s {
256+
lexer.read_word_with(&|s| match s {
257257
"var" => Some(Word::Keyword(Keyword::Var)),
258258
"void" => Some(Word::Keyword(Keyword::Void)),
259259
_ => None,
260260
})
261261
});
262262

263263
const L_W: ByteHandler = Some(|lexer| {
264-
lexer.read_word_with(|s| match s {
264+
lexer.read_word_with(&|s| match s {
265265
"while" => Some(Word::Keyword(Keyword::While)),
266266
"with" => Some(Word::Keyword(Keyword::With)),
267267
_ => None,
@@ -271,7 +271,7 @@ const L_W: ByteHandler = Some(|lexer| {
271271
const L_X: ByteHandler = IDN;
272272

273273
const L_Y: ByteHandler = Some(|lexer| {
274-
lexer.read_word_with(|s| match s {
274+
lexer.read_word_with(&|s| match s {
275275
"yield" => Some(Word::Keyword(Keyword::Yield)),
276276
_ => None,
277277
})

1 commit comments

Comments
 (1)

github-actions[bot] commented on Jun 18, 2024

@github-actions[bot]

Benchmark

Benchmark suite Current: 6426928 Previous: cfe3ba3 Ratio
es/full/bugs-1 297024 ns/iter (± 6679) 280327 ns/iter (± 6743) 1.06
es/full/minify/libraries/antd 2042491599 ns/iter (± 38561340) 1913069636 ns/iter (± 111261804) 1.07
es/full/minify/libraries/d3 399571106 ns/iter (± 5078299) 382309343 ns/iter (± 7376354) 1.05
es/full/minify/libraries/echarts 1734434572 ns/iter (± 15325791) 1710333748 ns/iter (± 47175057) 1.01
es/full/minify/libraries/jquery 106245144 ns/iter (± 1223850) 103831084 ns/iter (± 632271) 1.02
es/full/minify/libraries/lodash 117047242 ns/iter (± 883997) 114214100 ns/iter (± 294164) 1.02
es/full/minify/libraries/moment 60489422 ns/iter (± 285608) 59487896 ns/iter (± 167936) 1.02
es/full/minify/libraries/react 18538061 ns/iter (± 62908) 18347771 ns/iter (± 145435) 1.01
es/full/minify/libraries/terser 304982350 ns/iter (± 2473360) 282643405 ns/iter (± 4023890) 1.08
es/full/minify/libraries/three 552215413 ns/iter (± 7244349) 492508876 ns/iter (± 12648773) 1.12
es/full/minify/libraries/typescript 3436816600 ns/iter (± 37297033) 3235229727 ns/iter (± 28628404) 1.06
es/full/minify/libraries/victory 947376612 ns/iter (± 18884928) 750487362 ns/iter (± 19950654) 1.26
es/full/minify/libraries/vue 150922506 ns/iter (± 1553895) 145551120 ns/iter (± 669794) 1.04
es/full/codegen/es3 59721 ns/iter (± 127) 59684 ns/iter (± 121) 1.00
es/full/codegen/es5 60408 ns/iter (± 415) 60020 ns/iter (± 1141) 1.01
es/full/codegen/es2015 59830 ns/iter (± 364) 59740 ns/iter (± 149) 1.00
es/full/codegen/es2016 59690 ns/iter (± 154) 59713 ns/iter (± 146) 1.00
es/full/codegen/es2017 59707 ns/iter (± 120) 59761 ns/iter (± 161) 1.00
es/full/codegen/es2018 59615 ns/iter (± 80) 59967 ns/iter (± 163) 0.99
es/full/codegen/es2019 59724 ns/iter (± 90) 59864 ns/iter (± 158) 1.00
es/full/codegen/es2020 59536 ns/iter (± 183) 59608 ns/iter (± 324) 1.00
es/full/all/es3 165812330 ns/iter (± 1797687) 163128881 ns/iter (± 673681) 1.02
es/full/all/es5 160719582 ns/iter (± 820091) 157520087 ns/iter (± 685096) 1.02
es/full/all/es2015 118681865 ns/iter (± 880279) 117717981 ns/iter (± 778180) 1.01
es/full/all/es2016 116768359 ns/iter (± 586376) 117102688 ns/iter (± 895729) 1.00
es/full/all/es2017 116329269 ns/iter (± 737134) 115932104 ns/iter (± 800515) 1.00
es/full/all/es2018 114434726 ns/iter (± 730841) 114383728 ns/iter (± 529053) 1.00
es/full/all/es2019 114966667 ns/iter (± 758900) 113693558 ns/iter (± 816011) 1.01
es/full/all/es2020 109703594 ns/iter (± 841774) 109847499 ns/iter (± 1145666) 1.00
es/full/parser 484361 ns/iter (± 5510) 473220 ns/iter (± 3193) 1.02
es/full/base/fixer 15163 ns/iter (± 69) 15715 ns/iter (± 107) 0.96
es/full/base/resolver_and_hygiene 78937 ns/iter (± 241) 79887 ns/iter (± 3518) 0.99
serialization of serde 278 ns/iter (± 9) 273 ns/iter (± 6) 1.02
css/minify/libraries/bootstrap 21893721 ns/iter (± 250957) 22394438 ns/iter (± 263111) 0.98
css/visitor/compare/clone 1397438 ns/iter (± 10792) 1403696 ns/iter (± 16393) 1.00
css/visitor/compare/visit_mut_span 1518919 ns/iter (± 7985) 1527230 ns/iter (± 7286) 0.99
css/visitor/compare/visit_mut_span_panic 1536625 ns/iter (± 19884) 1548684 ns/iter (± 43048) 0.99
css/visitor/compare/fold_span 2062027 ns/iter (± 5090) 2039803 ns/iter (± 5604) 1.01
css/visitor/compare/fold_span_panic 2172400 ns/iter (± 4738) 2166088 ns/iter (± 4733) 1.00
css/lexer/bootstrap_5_1_3 3401658 ns/iter (± 14751) 3405780 ns/iter (± 23643) 1.00
css/lexer/foundation_6_7_4 2757338 ns/iter (± 5598) 2761690 ns/iter (± 94751) 1.00
css/lexer/tailwind_3_1_1 526137 ns/iter (± 322) 527039 ns/iter (± 1425) 1.00
css/parser/bootstrap_5_1_3 16163314 ns/iter (± 45578) 16143874 ns/iter (± 56127) 1.00
css/parser/foundation_6_7_4 12885701 ns/iter (± 222570) 12880326 ns/iter (± 22940) 1.00
css/parser/tailwind_3_1_1 2557413 ns/iter (± 5409) 2553203 ns/iter (± 9681) 1.00
es/codegen/colors 708556 ns/iter (± 390355) 728851 ns/iter (± 398849) 0.97
es/codegen/large 2994189 ns/iter (± 1603183) 3000904 ns/iter (± 1610632) 1.00
es/codegen/with-parser/colors 41699 ns/iter (± 455) 42049 ns/iter (± 225) 0.99
es/codegen/with-parser/large 454473 ns/iter (± 1961) 456997 ns/iter (± 31202) 0.99
es/minify/libraries/antd 1660150750 ns/iter (± 41553547) 1482849158 ns/iter (± 37596756) 1.12
es/minify/libraries/d3 358788890 ns/iter (± 9621500) 285587130 ns/iter (± 6096822) 1.26
es/minify/libraries/echarts 1385004459 ns/iter (± 14609561) 1206144445 ns/iter (± 10592611) 1.15
es/minify/libraries/jquery 93671740 ns/iter (± 1711064) 82924744 ns/iter (± 1022974) 1.13
es/minify/libraries/lodash 110726655 ns/iter (± 1081675) 104757044 ns/iter (± 207729) 1.06
es/minify/libraries/moment 50175406 ns/iter (± 186715) 48558338 ns/iter (± 60084) 1.03
es/minify/libraries/react 16978034 ns/iter (± 50489) 16343641 ns/iter (± 21213) 1.04
es/minify/libraries/terser 270567467 ns/iter (± 4070915) 218846619 ns/iter (± 984570) 1.24
es/minify/libraries/three 474270540 ns/iter (± 4942209) 370663656 ns/iter (± 6106758) 1.28
es/minify/libraries/typescript 2927273049 ns/iter (± 26912059) 2762696828 ns/iter (± 20799943) 1.06
es/minify/libraries/victory 710420356 ns/iter (± 16964886) 594380927 ns/iter (± 12080303) 1.20
es/minify/libraries/vue 122790668 ns/iter (± 711362) 122099617 ns/iter (± 1860800) 1.01
es/visitor/compare/clone 1683744 ns/iter (± 6686) 1726948 ns/iter (± 4750) 0.97
es/visitor/compare/visit_mut_span 2020696 ns/iter (± 9239) 2060605 ns/iter (± 11005) 0.98
es/visitor/compare/visit_mut_span_panic 2016470 ns/iter (± 20993) 2107972 ns/iter (± 44318) 0.96
es/visitor/compare/fold_span 2727865 ns/iter (± 5929) 2778845 ns/iter (± 7387) 0.98
es/visitor/compare/fold_span_panic 2763366 ns/iter (± 3169) 2828553 ns/iter (± 7571) 0.98
es/lexer/colors 9777 ns/iter (± 26) 10362 ns/iter (± 24) 0.94
es/lexer/angular 5117679 ns/iter (± 23055) 5096441 ns/iter (± 29097) 1.00
es/lexer/backbone 660840 ns/iter (± 2682) 643235 ns/iter (± 1821) 1.03
es/lexer/jquery 3566791 ns/iter (± 3809) 3692540 ns/iter (± 14943) 0.97
es/lexer/jquery mobile 5345639 ns/iter (± 14445) 5508323 ns/iter (± 123332) 0.97
es/lexer/mootools 2875128 ns/iter (± 21553) 2874552 ns/iter (± 20753) 1.00
es/lexer/underscore 532769 ns/iter (± 602) 539412 ns/iter (± 1922) 0.99
es/lexer/three 16331780 ns/iter (± 94428) 16845690 ns/iter (± 108829) 0.97
es/lexer/yui 2970361 ns/iter (± 3873) 2978630 ns/iter (± 2904) 1.00
es/lexer/cal-com 12982352 ns/iter (± 43846) 13522890 ns/iter (± 58561) 0.96
es/lexer/typescript 90949731 ns/iter (± 447483) 93934551 ns/iter (± 1453385) 0.97
es/parser/colors 24580 ns/iter (± 124) 25069 ns/iter (± 130) 0.98
es/parser/angular 12424789 ns/iter (± 147560) 12815692 ns/iter (± 72207) 0.97
es/parser/backbone 1835741 ns/iter (± 8000) 1849524 ns/iter (± 7848) 0.99
es/parser/jquery 10093791 ns/iter (± 160507) 10239803 ns/iter (± 56621) 0.99
es/parser/jquery mobile 15268349 ns/iter (± 97897) 15455592 ns/iter (± 90990) 0.99
es/parser/mootools 7846791 ns/iter (± 14183) 7996888 ns/iter (± 18483) 0.98
es/parser/underscore 1594569 ns/iter (± 8927) 1616499 ns/iter (± 5807) 0.99
es/parser/three 43655555 ns/iter (± 294234) 44188427 ns/iter (± 285394) 0.99
es/parser/yui 7496580 ns/iter (± 45866) 7590759 ns/iter (± 32845) 0.99
es/parser/cal-com 39928200 ns/iter (± 260500) 41316821 ns/iter (± 708377) 0.97
es/parser/typescript 269758547 ns/iter (± 1236592) 275217122 ns/iter (± 2292263) 0.98
es/preset-env/usage/builtin_type 136454 ns/iter (± 34767) 141799 ns/iter (± 33723) 0.96
es/preset-env/usage/property 16620 ns/iter (± 121) 16600 ns/iter (± 113) 1.00
es/resolver/typescript 100034028 ns/iter (± 2698678) 105244532 ns/iter (± 2343329) 0.95
es/fixer/typescript 79478664 ns/iter (± 4749582) 84344429 ns/iter (± 5776074) 0.94
es/hygiene/typescript 184559918 ns/iter (± 5411647) 209491936 ns/iter (± 3259504) 0.88
es/resolver_with_hygiene/typescript 310996032 ns/iter (± 3411752) 326725229 ns/iter (± 3807303) 0.95
es/visitor/base-perf/module_clone 56763 ns/iter (± 912) 57312 ns/iter (± 392) 0.99
es/visitor/base-perf/fold_empty 60222 ns/iter (± 794) 60385 ns/iter (± 779) 1.00
es/visitor/base-perf/fold_noop_impl_all 60745 ns/iter (± 838) 60760 ns/iter (± 438) 1.00
es/visitor/base-perf/fold_noop_impl_vec 60627 ns/iter (± 680) 60863 ns/iter (± 255) 1.00
es/visitor/base-perf/boxing_boxed_clone 58 ns/iter (± 0) 60 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_unboxed_clone 47 ns/iter (± 0) 47 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 106 ns/iter (± 0) 106 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 82 ns/iter (± 0) 81 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 2462 ns/iter (± 19) 2474 ns/iter (± 13) 1.00
es/base/parallel/resolver/typescript 2422314327 ns/iter (± 106731532) 2620770108 ns/iter (± 187517135) 0.92
es/base/parallel/hygiene/typescript 3215614515 ns/iter (± 32862941) 3459165530 ns/iter (± 118274545) 0.93
babelify-only 480027 ns/iter (± 5987) 476446 ns/iter (± 10065) 1.01
parse_and_babelify_angular 38738072 ns/iter (± 999683) 42010511 ns/iter (± 1055307) 0.92
parse_and_babelify_backbone 4750652 ns/iter (± 190392) 4546038 ns/iter (± 294981) 1.05
parse_and_babelify_jquery 30361717 ns/iter (± 876596) 29823102 ns/iter (± 316528) 1.02
parse_and_babelify_jquery_mobile 49935560 ns/iter (± 879279) 52854990 ns/iter (± 953630) 0.94
parse_and_babelify_mootools 26698334 ns/iter (± 482395) 27487143 ns/iter (± 336121) 0.97
parse_and_babelify_underscore 3698352 ns/iter (± 39655) 3684703 ns/iter (± 17886) 1.00
parse_and_babelify_yui 24989030 ns/iter (± 909478) 25003515 ns/iter (± 1002709) 1.00
html/minify/document/css_spec 45612799 ns/iter (± 474317) 45469565 ns/iter (± 289961) 1.00
html/minify/document/github 17858159 ns/iter (± 85105) 18155982 ns/iter (± 252861) 0.98
html/minify/document/stackoverflow 16248417 ns/iter (± 487811) 16613836 ns/iter (± 335456) 0.98
html/minify/document_fragment/css_spec 44263581 ns/iter (± 416858) 46327256 ns/iter (± 346005) 0.96
html/minify/document_fragment/github 17603939 ns/iter (± 18626) 18118441 ns/iter (± 34473) 0.97
html/minify/document_fragment/stackoverflow 16152566 ns/iter (± 86207) 16716482 ns/iter (± 35003) 0.97
html/document/visitor/compare/clone 165725 ns/iter (± 1972) 168664 ns/iter (± 1308) 0.98
html/document/visitor/compare/visit_mut_span 182728 ns/iter (± 1500) 186384 ns/iter (± 3589) 0.98
html/document/visitor/compare/visit_mut_span_panic 187768 ns/iter (± 3108) 189846 ns/iter (± 7670) 0.99
html/document/visitor/compare/fold_span 228793 ns/iter (± 2647) 232158 ns/iter (± 1711) 0.99
html/document/visitor/compare/fold_span_panic 276339 ns/iter (± 1660) 281996 ns/iter (± 1659) 0.98
html/document_fragment/visitor/compare/clone 165107 ns/iter (± 905) 169323 ns/iter (± 1769) 0.98
html/document_fragment/visitor/compare/visit_mut_span 183506 ns/iter (± 1365) 184534 ns/iter (± 1681) 0.99
html/document_fragment/visitor/compare/visit_mut_span_panic 185667 ns/iter (± 1371) 190812 ns/iter (± 3450) 0.97
html/document_fragment/visitor/compare/fold_span 229095 ns/iter (± 819) 230672 ns/iter (± 2627) 0.99
html/document_fragment/visitor/compare/fold_span_panic 277934 ns/iter (± 9473) 281430 ns/iter (± 1155) 0.99
html/lexer/css_2021_spec 12949772 ns/iter (± 135368) 12867872 ns/iter (± 33698) 1.01
html/lexer/github_com_17_05_2022 4932298 ns/iter (± 70224) 4902965 ns/iter (± 78007) 1.01
html/lexer/stackoverflow_com_17_05_2022 4683889 ns/iter (± 3603) 4653564 ns/iter (± 3975) 1.01
html/parser/parser_document/css_2021_spec 26197956 ns/iter (± 351280) 25183148 ns/iter (± 363461) 1.04
html/parser/parser_document/github_com_17_05_2022 8628078 ns/iter (± 60969) 8422110 ns/iter (± 14678) 1.02
html/parser/parser_document/stackoverflow_com_17_05_2022 7463495 ns/iter (± 10622) 7292514 ns/iter (± 15684) 1.02
html/parser/parser_document_fragment/css_2021_spec 25300387 ns/iter (± 283278) 24748151 ns/iter (± 98012) 1.02
html/parser/parser_document_fragment/github_com_17_05_2022 8517107 ns/iter (± 71188) 8387524 ns/iter (± 31974) 1.02
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7396567 ns/iter (± 38730) 7294714 ns/iter (± 40624) 1.01

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

Please sign in to comment.