Skip to content

Commit

Permalink
perf(es/lexer): Use string searcher for lexing line comments (#7043)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Mar 10, 2023
1 parent e0d4220 commit 962b0fc
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 30 deletions.
42 changes: 26 additions & 16 deletions crates/swc_common/src/input.rs
Expand Up @@ -9,7 +9,7 @@ pub type SourceFileInput<'a> = StringInput<'a>;
/// Implementation of [Input].
#[derive(Clone)]
pub struct StringInput<'a> {
cur_pos: BytePos,
start_pos_of_iter: BytePos,
last_pos: BytePos,
/// Current cursor
iter: str::CharIndices<'a>,
Expand All @@ -31,13 +31,23 @@ impl<'a> StringInput<'a> {
assert!(start <= end);

StringInput {
cur_pos: start,
start_pos_of_iter: start,
last_pos: start,
orig: src,
iter: src.char_indices(),
orig_start: start,
}
}

#[inline(always)]
pub fn as_str(&self) -> &str {
self.iter.as_str()
}

#[inline]
pub fn bump_bytes(&mut self, n: usize) {
self.reset_to(self.last_pos + BytePos(n as u32));
}
}

/// Creates an [Input] from [SourceFile]. This is an alias for
Expand Down Expand Up @@ -84,7 +94,7 @@ impl<'a> Input for StringInput<'a> {
#[inline]
fn bump(&mut self) {
if let Some((i, c)) = self.iter.next() {
self.last_pos = self.cur_pos + BytePos((i + c.len_utf8()) as u32);
self.last_pos = self.start_pos_of_iter + BytePos((i + c.len_utf8()) as u32);
} else {
unsafe {
debug_unreachable!("bump should not be called when cur() == None");
Expand Down Expand Up @@ -120,7 +130,7 @@ impl<'a> Input for StringInput<'a> {

self.iter = s[end_idx..].char_indices();
self.last_pos = end;
self.cur_pos = end;
self.start_pos_of_iter = end;

ret
}
Expand All @@ -142,7 +152,7 @@ impl<'a> Input for StringInput<'a> {
let ret = &s[..last];

self.last_pos = self.last_pos + BytePos(last as _);
self.cur_pos = self.last_pos;
self.start_pos_of_iter = self.last_pos;
self.iter = s[last..].char_indices();

ret
Expand All @@ -166,7 +176,7 @@ impl<'a> Input for StringInput<'a> {
}

self.last_pos = self.last_pos + BytePos(last as _);
self.cur_pos = self.last_pos;
self.start_pos_of_iter = self.last_pos;
self.iter = s[last..].char_indices();

Some(self.last_pos)
Expand All @@ -179,7 +189,7 @@ impl<'a> Input for StringInput<'a> {

let s = &orig[idx..];
self.iter = s.char_indices();
self.cur_pos = to;
self.start_pos_of_iter = to;
self.last_pos = to;
}

Expand All @@ -197,7 +207,7 @@ impl<'a> Input for StringInput<'a> {
fn eat_byte(&mut self, c: u8) -> bool {
if self.is_byte(c) {
if let Some((i, _)) = self.iter.next() {
self.last_pos = self.cur_pos + BytePos((i + 1) as u32);
self.last_pos = self.start_pos_of_iter + BytePos((i + 1) as u32);
} else {
unsafe {
debug_unreachable!(
Expand Down Expand Up @@ -304,13 +314,13 @@ mod tests {
with_test_sess("foo/d", |mut i| {
assert_eq!(i.slice(BytePos(1), BytePos(2)), "f");
assert_eq!(i.last_pos, BytePos(2));
assert_eq!(i.cur_pos, BytePos(2));
assert_eq!(i.start_pos_of_iter, BytePos(2));
assert_eq!(i.cur(), Some('o'));

assert_eq!(i.slice(BytePos(2), BytePos(4)), "oo");
assert_eq!(i.slice(BytePos(1), BytePos(4)), "foo");
assert_eq!(i.last_pos, BytePos(4));
assert_eq!(i.cur_pos, BytePos(4));
assert_eq!(i.start_pos_of_iter, BytePos(4));
assert_eq!(i.cur(), Some('/'));
});
}
Expand All @@ -320,13 +330,13 @@ mod tests {
with_test_sess("load", |mut i| {
assert_eq!(i.slice(BytePos(1), BytePos(3)), "lo");
assert_eq!(i.last_pos, BytePos(3));
assert_eq!(i.cur_pos, BytePos(3));
assert_eq!(i.start_pos_of_iter, BytePos(3));
assert_eq!(i.cur(), Some('a'));
i.reset_to(BytePos(1));

assert_eq!(i.cur(), Some('l'));
assert_eq!(i.last_pos, BytePos(1));
assert_eq!(i.cur_pos, BytePos(1));
assert_eq!(i.start_pos_of_iter, BytePos(1));
});
}

Expand All @@ -335,12 +345,12 @@ mod tests {
with_test_sess("foo/d", |mut i| {
assert_eq!(i.cur_pos(), BytePos(1));
assert_eq!(i.last_pos, BytePos(1));
assert_eq!(i.cur_pos, BytePos(1));
assert_eq!(i.start_pos_of_iter, BytePos(1));
assert_eq!(i.uncons_while(|c| c.is_alphabetic()), "foo");

// assert_eq!(i.cur_pos(), BytePos(4));
assert_eq!(i.last_pos, BytePos(4));
assert_eq!(i.cur_pos, BytePos(4));
assert_eq!(i.start_pos_of_iter, BytePos(4));
assert_eq!(i.cur(), Some('/'));

i.bump();
Expand All @@ -358,10 +368,10 @@ mod tests {
with_test_sess("foo/d", |mut i| {
assert_eq!(i.cur_pos(), BytePos(1));
assert_eq!(i.last_pos, BytePos(1));
assert_eq!(i.cur_pos, BytePos(1));
assert_eq!(i.start_pos_of_iter, BytePos(1));

assert_eq!(i.find(|c| c == '/'), Some(BytePos(5)));
assert_eq!(i.cur_pos, BytePos(5));
assert_eq!(i.start_pos_of_iter, BytePos(5));
assert_eq!(i.last_pos, BytePos(5));
assert_eq!(i.cur(), Some('d'));
});
Expand Down
35 changes: 21 additions & 14 deletions crates/swc_ecma_parser/src/lexer/util.rs
Expand Up @@ -64,38 +64,47 @@ impl<'a> Lexer<'a> {
}
}

#[inline(always)]
pub(super) fn bump(&mut self) {
self.input.bump()
}

#[inline(always)]
pub(super) fn is(&mut self, c: u8) -> bool {
self.input.is_byte(c)
}

#[inline(always)]
pub(super) fn is_str(&self, s: &str) -> bool {
self.input.is_str(s)
}

#[inline(always)]
pub(super) fn eat(&mut self, c: u8) -> bool {
self.input.eat_byte(c)
}

#[inline(always)]
pub(super) fn cur(&mut self) -> Option<char> {
self.input.cur()
}

#[inline(always)]
pub(super) fn peek(&mut self) -> Option<char> {
self.input.peek()
}

#[inline(always)]
pub(super) fn peek_ahead(&mut self) -> Option<char> {
self.input.peek_ahead()
}

#[inline(always)]
pub(super) fn cur_pos(&mut self) -> BytePos {
self.input.cur_pos()
}

#[inline(always)]
pub(super) fn last_pos(&self) -> BytePos {
self.input.last_pos()
}
Expand Down Expand Up @@ -226,9 +235,7 @@ impl<'a> Lexer<'a> {

pub(super) fn skip_line_comment(&mut self, start_skip: usize) {
let start = self.cur_pos();
for _ in 0..start_skip {
self.bump();
}
self.input.bump_bytes(start_skip);
let slice_start = self.cur_pos();

// foo // comment for foo
Expand All @@ -239,17 +246,18 @@ impl<'a> Lexer<'a> {
// bar
//
let is_for_next = self.state.had_line_break || !self.state.can_have_trailing_line_comment();
let mut end = self.cur_pos();

while let Some(c) = self.cur() {
self.bump();
if c.is_line_terminator() {
let idx = self
.input
.as_str()
.find(['\r', '\n', '\u{2028}', '\u{2029}'])
.map_or(self.input.as_str().len(), |v| {
self.state.had_line_break = true;
break;
} else {
end = self.cur_pos();
}
}
v
});

self.input.bump_bytes(idx);
let end = self.cur_pos();

if let Some(comments) = self.comments_buffer.as_mut() {
let s = self.input.slice(slice_start, end);
Expand Down Expand Up @@ -280,8 +288,7 @@ impl<'a> Lexer<'a> {
debug_assert_eq!(self.cur(), Some('/'));
debug_assert_eq!(self.peek(), Some('*'));

self.bump();
self.bump();
self.input.bump_bytes(2);

// jsdoc
let slice_start = self.cur_pos();
Expand Down

1 comment on commit 962b0fc

@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: 962b0fc Previous: 0314869 Ratio
es/full/bugs-1 302118 ns/iter (± 7812) 304912 ns/iter (± 6871) 0.99
es/full/minify/libraries/antd 1788156705 ns/iter (± 12024167) 1667933162 ns/iter (± 21434633) 1.07
es/full/minify/libraries/d3 334721278 ns/iter (± 3665938) 319673573 ns/iter (± 8351891) 1.05
es/full/minify/libraries/echarts 1352417951 ns/iter (± 10662205) 1304386979 ns/iter (± 35193781) 1.04
es/full/minify/libraries/jquery 94003823 ns/iter (± 819001) 93181867 ns/iter (± 1570623) 1.01
es/full/minify/libraries/lodash 110319720 ns/iter (± 1208016) 108520536 ns/iter (± 1407975) 1.02
es/full/minify/libraries/moment 54455795 ns/iter (± 504912) 52635523 ns/iter (± 593696) 1.03
es/full/minify/libraries/react 19706034 ns/iter (± 143604) 19251237 ns/iter (± 186852) 1.02
es/full/minify/libraries/terser 266632113 ns/iter (± 4871299) 248187973 ns/iter (± 4640558) 1.07
es/full/minify/libraries/three 464904236 ns/iter (± 11650273) 443819169 ns/iter (± 5717696) 1.05
es/full/minify/libraries/typescript 3110798759 ns/iter (± 27396758) 3151930140 ns/iter (± 39222856) 0.99
es/full/minify/libraries/victory 685242730 ns/iter (± 13625621) 714017926 ns/iter (± 12099931) 0.96
es/full/minify/libraries/vue 135289991 ns/iter (± 1626935) 130310032 ns/iter (± 1223515) 1.04
es/full/codegen/es3 26586 ns/iter (± 48) 26336 ns/iter (± 173) 1.01
es/full/codegen/es5 26665 ns/iter (± 53) 26387 ns/iter (± 60) 1.01
es/full/codegen/es2015 26569 ns/iter (± 68) 26391 ns/iter (± 77) 1.01
es/full/codegen/es2016 26501 ns/iter (± 112) 26335 ns/iter (± 81) 1.01
es/full/codegen/es2017 26630 ns/iter (± 110) 26320 ns/iter (± 50) 1.01
es/full/codegen/es2018 26681 ns/iter (± 62) 26358 ns/iter (± 31) 1.01
es/full/codegen/es2019 26562 ns/iter (± 107) 26394 ns/iter (± 39) 1.01
es/full/codegen/es2020 26511 ns/iter (± 112) 26368 ns/iter (± 75) 1.01
es/full/all/es3 177087610 ns/iter (± 1967510) 173035236 ns/iter (± 2008290) 1.02
es/full/all/es5 164117278 ns/iter (± 4307553) 160989893 ns/iter (± 2798297) 1.02
es/full/all/es2015 130120408 ns/iter (± 1175432) 126185109 ns/iter (± 4031601) 1.03
es/full/all/es2016 127506220 ns/iter (± 1957841) 124341843 ns/iter (± 1025036) 1.03
es/full/all/es2017 126188662 ns/iter (± 1498948) 123176112 ns/iter (± 676998) 1.02
es/full/all/es2018 122902382 ns/iter (± 778668) 118888359 ns/iter (± 1409154) 1.03
es/full/all/es2019 121657072 ns/iter (± 1014151) 119905861 ns/iter (± 870900) 1.01
es/full/all/es2020 116030431 ns/iter (± 790745) 114919823 ns/iter (± 502621) 1.01
es/full/parser 547691 ns/iter (± 7645) 537430 ns/iter (± 8110) 1.02
es/full/base/fixer 23203 ns/iter (± 117) 23227 ns/iter (± 38) 1.00
es/full/base/resolver_and_hygiene 82158 ns/iter (± 550) 82922 ns/iter (± 245) 0.99
serialization of ast node 126 ns/iter (± 0) 128 ns/iter (± 0) 0.98
serialization of serde 129 ns/iter (± 0) 129 ns/iter (± 0) 1
css/minify/libraries/bootstrap 28107318 ns/iter (± 201772) 28324406 ns/iter (± 240741) 0.99
css/visitor/compare/clone 2098201 ns/iter (± 21011) 2087156 ns/iter (± 20018) 1.01
css/visitor/compare/visit_mut_span 2281581 ns/iter (± 36214) 2301958 ns/iter (± 9165) 0.99
css/visitor/compare/visit_mut_span_panic 2333244 ns/iter (± 13278) 2373316 ns/iter (± 28316) 0.98
css/visitor/compare/fold_span 3037089 ns/iter (± 17625) 3088984 ns/iter (± 23932) 0.98
css/visitor/compare/fold_span_panic 3187679 ns/iter (± 17801) 3220281 ns/iter (± 30325) 0.99
css/lexer/bootstrap_5_1_3 5209625 ns/iter (± 4139) 5223846 ns/iter (± 39899) 1.00
css/lexer/foundation_6_7_4 4389747 ns/iter (± 14629) 4411250 ns/iter (± 25484) 1.00
css/lexer/tailwind_3_1_1 833323 ns/iter (± 893) 837363 ns/iter (± 1397) 1.00
css/parser/bootstrap_5_1_3 21938474 ns/iter (± 65651) 21865277 ns/iter (± 111608) 1.00
css/parser/foundation_6_7_4 17592323 ns/iter (± 104342) 17427443 ns/iter (± 127765) 1.01
css/parser/tailwind_3_1_1 3349670 ns/iter (± 6215) 3331060 ns/iter (± 11354) 1.01
es/codegen/colors 325855 ns/iter (± 186539) 331466 ns/iter (± 186424) 0.98
es/codegen/large 1254267 ns/iter (± 631361) 1207070 ns/iter (± 638869) 1.04
es/codegen/with-parser/colors 47626 ns/iter (± 485) 48195 ns/iter (± 195) 0.99
es/codegen/with-parser/large 518070 ns/iter (± 2863) 520979 ns/iter (± 1566) 0.99
es/minify/libraries/antd 1436123680 ns/iter (± 22091388) 1441853285 ns/iter (± 15678362) 1.00
es/minify/libraries/d3 256481937 ns/iter (± 2957750) 259237965 ns/iter (± 3450509) 0.99
es/minify/libraries/echarts 1071461764 ns/iter (± 16181222) 1083636933 ns/iter (± 22718275) 0.99
es/minify/libraries/jquery 78560252 ns/iter (± 691062) 79862333 ns/iter (± 1336024) 0.98
es/minify/libraries/lodash 94538011 ns/iter (± 717076) 95151875 ns/iter (± 1137614) 0.99
es/minify/libraries/moment 45419452 ns/iter (± 318595) 46141290 ns/iter (± 628979) 0.98
es/minify/libraries/react 17032308 ns/iter (± 141349) 17210188 ns/iter (± 180626) 0.99
es/minify/libraries/terser 205853975 ns/iter (± 1922911) 211678825 ns/iter (± 2051043) 0.97
es/minify/libraries/three 357191923 ns/iter (± 9160268) 384677626 ns/iter (± 8313818) 0.93
es/minify/libraries/typescript 2627282276 ns/iter (± 11265946) 2657215532 ns/iter (± 18554120) 0.99
es/minify/libraries/victory 570038290 ns/iter (± 9044024) 568878641 ns/iter (± 9806234) 1.00
es/minify/libraries/vue 114368677 ns/iter (± 980659) 117541581 ns/iter (± 1464691) 0.97
es/visitor/compare/clone 2303604 ns/iter (± 18851) 2319987 ns/iter (± 13697) 0.99
es/visitor/compare/visit_mut_span 2642947 ns/iter (± 8320) 2664340 ns/iter (± 18796) 0.99
es/visitor/compare/visit_mut_span_panic 2687882 ns/iter (± 13648) 2724103 ns/iter (± 11365) 0.99
es/visitor/compare/fold_span 3757811 ns/iter (± 18040) 3749632 ns/iter (± 17871) 1.00
es/visitor/compare/fold_span_panic 3887311 ns/iter (± 22070) 3921429 ns/iter (± 20892) 0.99
es/lexer/colors 16553 ns/iter (± 61) 16357 ns/iter (± 78) 1.01
es/lexer/angular 8099915 ns/iter (± 29278) 7993492 ns/iter (± 24609) 1.01
es/lexer/backbone 1002523 ns/iter (± 3545) 1031889 ns/iter (± 4697) 0.97
es/lexer/jquery 5637319 ns/iter (± 22124) 5736744 ns/iter (± 20185) 0.98
es/lexer/jquery mobile 8732309 ns/iter (± 18699) 8825741 ns/iter (± 24320) 0.99
es/lexer/mootools 4419172 ns/iter (± 21484) 4518672 ns/iter (± 9880) 0.98
es/lexer/underscore 842516 ns/iter (± 4857) 854791 ns/iter (± 4079) 0.99
es/lexer/three 26609879 ns/iter (± 90665) 26640194 ns/iter (± 146935) 1.00
es/lexer/yui 4923641 ns/iter (± 14201) 4910722 ns/iter (± 15525) 1.00
es/parser/colors 30465 ns/iter (± 89) 30327 ns/iter (± 73) 1.00
es/parser/angular 16054088 ns/iter (± 183810) 15926498 ns/iter (± 141208) 1.01
es/parser/backbone 2273650 ns/iter (± 13805) 2278636 ns/iter (± 9190) 1.00
es/parser/jquery 12393822 ns/iter (± 163064) 12492341 ns/iter (± 128453) 0.99
es/parser/jquery mobile 19419616 ns/iter (± 146992) 20052730 ns/iter (± 413435) 0.97
es/parser/mootools 9423508 ns/iter (± 65751) 9449630 ns/iter (± 62812) 1.00
es/parser/underscore 1903416 ns/iter (± 17353) 1935477 ns/iter (± 15433) 0.98
es/parser/three 56619136 ns/iter (± 564835) 57475072 ns/iter (± 1557159) 0.99
es/parser/yui 9494849 ns/iter (± 81775) 9451436 ns/iter (± 94354) 1.00
es/preset-env/usage/builtin_type 139330 ns/iter (± 32115) 138581 ns/iter (± 31810) 1.01
es/preset-env/usage/property 20710 ns/iter (± 83) 20539 ns/iter (± 130) 1.01
es/resolver/typescript 110439390 ns/iter (± 1828861) 115848478 ns/iter (± 4694799) 0.95
es/fixer/typescript 86140477 ns/iter (± 2729469) 86378109 ns/iter (± 1127634) 1.00
es/hygiene/typescript 184380554 ns/iter (± 1340242) 187786999 ns/iter (± 2970372) 0.98
es/resolver_with_hygiene/typescript 318995694 ns/iter (± 3689089) 321635871 ns/iter (± 4957273) 0.99
es/visitor/base-perf/module_clone 77484 ns/iter (± 1362) 75852 ns/iter (± 1710) 1.02
es/visitor/base-perf/fold_empty 87230 ns/iter (± 1338) 86150 ns/iter (± 1630) 1.01
es/visitor/base-perf/fold_noop_impl_all 87294 ns/iter (± 1567) 88296 ns/iter (± 2270) 0.99
es/visitor/base-perf/fold_noop_impl_vec 86918 ns/iter (± 1548) 86719 ns/iter (± 1298) 1.00
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 57 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 54 ns/iter (± 0) 53 ns/iter (± 0) 1.02
es/visitor/base-perf/boxing_boxed 100 ns/iter (± 0) 99 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 97 ns/iter (± 0) 103 ns/iter (± 0) 0.94
es/visitor/base-perf/visit_contains_this 3375 ns/iter (± 82) 3622 ns/iter (± 80) 0.93
es/base/parallel/resolver/typescript 6062495638 ns/iter (± 610775375) 5685079603 ns/iter (± 463393930) 1.07
es/base/parallel/hygiene/typescript 2137109109 ns/iter (± 15864105) 2143322247 ns/iter (± 24023215) 1.00
misc/visitors/time-complexity/time 5 102 ns/iter (± 0) 102 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 329 ns/iter (± 0) 320 ns/iter (± 0) 1.03
misc/visitors/time-complexity/time 15 663 ns/iter (± 0) 664 ns/iter (± 0) 1.00
misc/visitors/time-complexity/time 20 1237 ns/iter (± 3) 1278 ns/iter (± 41) 0.97
misc/visitors/time-complexity/time 40 6662 ns/iter (± 10) 6727 ns/iter (± 20) 0.99
misc/visitors/time-complexity/time 60 17270 ns/iter (± 92) 17258 ns/iter (± 143) 1.00
es/full-target/es2016 189912 ns/iter (± 472) 189493 ns/iter (± 1324) 1.00
es/full-target/es2017 184545 ns/iter (± 557) 184419 ns/iter (± 622) 1.00
es/full-target/es2018 173504 ns/iter (± 1047) 173354 ns/iter (± 592) 1.00
es2020_nullish_coalescing 67184 ns/iter (± 124) 67366 ns/iter (± 270) 1.00
es2020_optional_chaining 95219 ns/iter (± 221) 95667 ns/iter (± 7673) 1.00
es2022_class_properties 94327 ns/iter (± 277) 93947 ns/iter (± 221) 1.00
es2018_object_rest_spread 71232 ns/iter (± 108) 71839 ns/iter (± 129) 0.99
es2019_optional_catch_binding 61547 ns/iter (± 84) 61746 ns/iter (± 152) 1.00
es2017_async_to_generator 61686 ns/iter (± 103) 61937 ns/iter (± 116) 1.00
es2016_exponentiation 65413 ns/iter (± 204) 65815 ns/iter (± 210) 0.99
es2015_arrow 70135 ns/iter (± 131) 69659 ns/iter (± 135) 1.01
es2015_block_scoped_fn 66988 ns/iter (± 106) 66802 ns/iter (± 150) 1.00
es2015_block_scoping 152156 ns/iter (± 7574) 139204 ns/iter (± 3831) 1.09
es2015_classes 117267 ns/iter (± 393) 117405 ns/iter (± 461) 1.00
es2015_computed_props 61411 ns/iter (± 83) 61269 ns/iter (± 116) 1.00
es2015_destructuring 116555 ns/iter (± 305) 116682 ns/iter (± 273) 1.00
es2015_duplicate_keys 64357 ns/iter (± 600) 64427 ns/iter (± 115) 1.00
es2015_parameters 80031 ns/iter (± 79) 80489 ns/iter (± 190) 0.99
es2015_fn_name 66544 ns/iter (± 478) 66663 ns/iter (± 511) 1.00
es2015_for_of 64232 ns/iter (± 95) 64198 ns/iter (± 92) 1.00
es2015_instanceof 63304 ns/iter (± 80) 63438 ns/iter (± 115) 1.00
es2015_shorthand_property 61331 ns/iter (± 108) 61406 ns/iter (± 108) 1.00
es2015_spread 60884 ns/iter (± 123) 61136 ns/iter (± 97) 1.00
es2015_sticky_regex 62387 ns/iter (± 110) 62609 ns/iter (± 175) 1.00
es2015_typeof_symbol 62368 ns/iter (± 122) 62583 ns/iter (± 95) 1.00
es/transform/baseline/base 51928 ns/iter (± 108) 52068 ns/iter (± 125) 1.00
es/transform/baseline/common_reserved_word 62844 ns/iter (± 70) 63067 ns/iter (± 134) 1.00
es/transform/baseline/common_typescript 142957 ns/iter (± 1278) 141888 ns/iter (± 1067) 1.01
es/target/es3 169488 ns/iter (± 201) 170365 ns/iter (± 213) 0.99
es/target/es2015 626892 ns/iter (± 946) 627911 ns/iter (± 1255) 1.00
es/target/es2016 65391 ns/iter (± 97) 65653 ns/iter (± 124) 1.00
es/target/es2017 61851 ns/iter (± 104) 62027 ns/iter (± 130) 1.00
es/target/es2018 81244 ns/iter (± 89) 81605 ns/iter (± 102) 1.00
es/target/es2020 132371 ns/iter (± 213) 133595 ns/iter (± 265) 0.99
babelify-only 669792 ns/iter (± 5894) 675956 ns/iter (± 5065) 0.99
parse_and_babelify_angular 45661244 ns/iter (± 1184969) 44574632 ns/iter (± 1295261) 1.02
parse_and_babelify_backbone 5477648 ns/iter (± 46885) 5577223 ns/iter (± 33589) 0.98
parse_and_babelify_jquery 32838089 ns/iter (± 346848) 33224200 ns/iter (± 349352) 0.99
parse_and_babelify_jquery_mobile 56306940 ns/iter (± 1284660) 57502960 ns/iter (± 895350) 0.98
parse_and_babelify_mootools 35603810 ns/iter (± 550858) 35021046 ns/iter (± 502837) 1.02
parse_and_babelify_underscore 4378933 ns/iter (± 17954) 4391031 ns/iter (± 30809) 1.00
parse_and_babelify_yui 33464747 ns/iter (± 369479) 33971240 ns/iter (± 316084) 0.99
html/minify/document/css_spec 42763032 ns/iter (± 337186) 43127697 ns/iter (± 215599) 0.99
html/minify/document/github 17785434 ns/iter (± 97009) 17775580 ns/iter (± 83545) 1.00
html/minify/document/stackoverflow 15877216 ns/iter (± 35670) 15886874 ns/iter (± 62317) 1.00
html/minify/document_fragment/css_spec 41205912 ns/iter (± 407294) 42099756 ns/iter (± 895666) 0.98
html/minify/document_fragment/github 17037710 ns/iter (± 27236) 16996342 ns/iter (± 56663) 1.00
html/minify/document_fragment/stackoverflow 15411743 ns/iter (± 27506) 15461320 ns/iter (± 275385) 1.00
html/document/visitor/compare/clone 343508 ns/iter (± 1623) 343386 ns/iter (± 1648) 1.00
html/document/visitor/compare/visit_mut_span 376093 ns/iter (± 2324) 377305 ns/iter (± 1556) 1.00
html/document/visitor/compare/visit_mut_span_panic 378416 ns/iter (± 1430) 382158 ns/iter (± 1903) 0.99
html/document/visitor/compare/fold_span 413975 ns/iter (± 2461) 407722 ns/iter (± 2656) 1.02
html/document/visitor/compare/fold_span_panic 467495 ns/iter (± 1373) 464933 ns/iter (± 2303) 1.01
html/document_fragment/visitor/compare/clone 346207 ns/iter (± 1701) 342394 ns/iter (± 1597) 1.01
html/document_fragment/visitor/compare/visit_mut_span 373689 ns/iter (± 1438) 373879 ns/iter (± 2445) 1.00
html/document_fragment/visitor/compare/visit_mut_span_panic 379302 ns/iter (± 1619) 385378 ns/iter (± 2450) 0.98
html/document_fragment/visitor/compare/fold_span 411164 ns/iter (± 2616) 411208 ns/iter (± 2122) 1.00
html/document_fragment/visitor/compare/fold_span_panic 467984 ns/iter (± 1480) 471217 ns/iter (± 2147) 0.99
html/lexer/css_2021_spec 15618327 ns/iter (± 7995) 15753826 ns/iter (± 215280) 0.99
html/lexer/github_com_17_05_2022 6040013 ns/iter (± 7100) 6086679 ns/iter (± 8042) 0.99
html/lexer/stackoverflow_com_17_05_2022 5641678 ns/iter (± 3139) 5691698 ns/iter (± 3819) 0.99
html/parser/parser_document/css_2021_spec 26471595 ns/iter (± 201129) 27063820 ns/iter (± 289818) 0.98
html/parser/parser_document/github_com_17_05_2022 8957520 ns/iter (± 19197) 8950473 ns/iter (± 25926) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7778303 ns/iter (± 4254) 7814158 ns/iter (± 11765) 1.00
html/parser/parser_document_fragment/css_2021_spec 27355523 ns/iter (± 689755) 28050406 ns/iter (± 251465) 0.98
html/parser/parser_document_fragment/github_com_17_05_2022 8943222 ns/iter (± 13581) 8950058 ns/iter (± 11238) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7775890 ns/iter (± 8067) 7805093 ns/iter (± 12852) 1.00

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

Please sign in to comment.