Skip to content

Commit

Permalink
fix(es/minifier): Respect span hygiene from expr simplifier (#6899)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #6896.
  • Loading branch information
kdy1 committed Feb 7, 2023
1 parent af175fd commit 432dca6
Show file tree
Hide file tree
Showing 3 changed files with 277 additions and 6 deletions.
4 changes: 1 addition & 3 deletions crates/swc_ecma_minifier/src/compress/optimize/mod.rs
Expand Up @@ -2408,16 +2408,14 @@ where
let old_append = self.append_stmts.take();

#[cfg(feature = "debug")]
let _tracing = if self.debug_infinite_loop {
let _tracing = {
let text = dump(&*s, false);

if text.lines().count() < 10 {
Some(span!(Level::ERROR, "visit_mut_stmt", "start" = &*text).entered())
} else {
None
}
} else {
None
};

let ctx = Ctx {
Expand Down
262 changes: 262 additions & 0 deletions crates/swc_ecma_minifier/tests/exec.rs
Expand Up @@ -10496,3 +10496,265 @@ fn issue_6750_2() {
false,
)
}

#[test]
fn issue_6899_1() {
run_exec_test(
r###"
// this the original code, just for comparison
function Limit(min, max) {
var length = Math.abs(min - max);
function reachedMin(n) {
return n < min;
}
function reachedMax(n) {
return n > max;
}
function reachedAny(n) {
return reachedMin(n) || reachedMax(n);
}
function constrain(n) {
if (!reachedAny(n)) return n;
return reachedMin(n) ? min : max;
}
function removeOffset(n) {
if (!length) return n;
return n - length * Math.ceil((n - max) / length);
}
var self = {
length: length,
max: max,
min: min,
constrain: constrain,
reachedAny: reachedAny,
reachedMax: reachedMax,
reachedMin: reachedMin,
removeOffset: removeOffset
};
return self;
}
console.log("The result should be 0. And it is:", Limit(0,3).constrain(-1))
"###,
r###"
{
"arguments": false,
"arrows": true,
"booleans": true,
"booleans_as_integers": false,
"collapse_vars": true,
"comparisons": true,
"computed_props": true,
"conditionals": true,
"dead_code": true,
"directives": true,
"drop_console": false,
"drop_debugger": true,
"evaluate": true,
"expression": false,
"hoist_funs": false,
"hoist_props": true,
"hoist_vars": false,
"if_return": true,
"join_vars": true,
"keep_classnames": false,
"keep_fargs": true,
"keep_fnames": false,
"keep_infinity": false,
"loops": true,
"negate_iife": true,
"properties": true,
"reduce_funcs": false,
"reduce_vars": false,
"side_effects": true,
"switches": true,
"typeofs": true,
"unsafe": false,
"unsafe_arrows": false,
"unsafe_comps": false,
"unsafe_Function": false,
"unsafe_math": false,
"unsafe_symbols": false,
"unsafe_methods": false,
"unsafe_proto": false,
"unsafe_regexp": false,
"unsafe_undefined": false,
"unused": true,
"const_to_let": true,
"pristine_globals": true
}
"###,
false,
)
}

#[test]
fn issue_6899_2() {
run_default_exec_test(
r###"
// this the original code, just for comparison
function Limit(min, max) {
var length = Math.abs(min - max);
function reachedMin(n) {
return n < min;
}
function reachedMax(n) {
return n > max;
}
function reachedAny(n) {
return reachedMin(n) || reachedMax(n);
}
function constrain(n) {
if (!reachedAny(n)) return n;
return reachedMin(n) ? min : max;
}
function removeOffset(n) {
if (!length) return n;
return n - length * Math.ceil((n - max) / length);
}
var self = {
length: length,
max: max,
min: min,
constrain: constrain,
reachedAny: reachedAny,
reachedMax: reachedMax,
reachedMin: reachedMin,
removeOffset: removeOffset
};
return self;
}
console.log("The result should be 0. And it is:", Limit(0,3).constrain(-1))
"###,
);
}

#[test]
fn issue_6899_3() {
run_default_exec_test(
r###"
console.log("The result should be 0. And it is:", function(n, e) {
var r = Math.abs(n - e);
function t(e) {
return e < n
}
function u(n) {
return n > e
}
function c(n) {
return t(n) || u(n)
}
return {
length: r,
max: e,
min: n,
constrain: function(r) {
return c(r) ? t(r) ? n : e : r
},
reachedAny: c,
reachedMax: u,
reachedMin: t,
removeOffset: function(n) {
return r ? n - r * Math.ceil((n - e) / r) : n
}
}
}(0, 3).constrain(-1));
"###,
);
}

#[test]
fn issue_6899_4() {
run_exec_test(
r###"
console.log("The result should be 0. And it is:", function(n, e) {
var r = Math.abs(n - e);
function t(e) {
return e < n
}
function u(n) {
return n > e
}
function c(n) {
return t(n) || u(n)
}
return {
length: r,
max: e,
min: n,
constrain: function(r) {
return c(r) ? t(r) ? n : e : r
},
reachedAny: c,
reachedMax: u,
reachedMin: t,
removeOffset: function(n) {
return r ? n - r * Math.ceil((n - e) / r) : n
}
}
}(0, 3).constrain(-1));
"###,
r###"
{
"inline": true,
"passes": 2
}
"###,
false,
);
}

#[test]
fn issue_6899_5() {
run_exec_test(
r###"
console.log("The result should be 0. And it is:", function(n, e) {
var r = Math.abs(n - e);
function t(e) {
return e < n
}
function u(n) {
return n > e
}
function c(n) {
return t(n) || u(n)
}
return {
constrain: function(r) {
return c(r) ? (t(r) ? n : e) : r
},
}
}(0, 3).constrain(-1));
"###,
r###"
{
"inline": true,
"passes": 2
}
"###,
false,
);
}
17 changes: 14 additions & 3 deletions crates/swc_ecma_transforms_optimization/src/simplify/expr/mod.rs
Expand Up @@ -1032,9 +1032,20 @@ impl SimplifyExpr {
match (left, right) {
// Special case: `x < x` is always false.
(
&Expr::Ident(Ident { sym: ref li, .. }, ..),
&Expr::Ident(Ident { sym: ref ri, .. }),
) if !will_negate && li == ri => {
&Expr::Ident(
Ident {
sym: ref li,
span: l_span,
..
},
..,
),
&Expr::Ident(Ident {
sym: ref ri,
span: r_span,
..
}),
) if !will_negate && li == ri && l_span.ctxt == r_span.ctxt => {
return Known(false);
}
// Special case: `typeof a < typeof a` is always false.
Expand Down

1 comment on commit 432dca6

@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: 432dca6 Previous: 82128e3 Ratio
es/full/bugs-1 306454 ns/iter (± 8281) 307151 ns/iter (± 4580) 1.00
es/full/minify/libraries/antd 1558720049 ns/iter (± 24616719) 1785688879 ns/iter (± 21808022) 0.87
es/full/minify/libraries/d3 297082576 ns/iter (± 10729284) 321759743 ns/iter (± 6518243) 0.92
es/full/minify/libraries/echarts 1183932674 ns/iter (± 8657758) 1392448722 ns/iter (± 18923170) 0.85
es/full/minify/libraries/jquery 89356565 ns/iter (± 494692) 93789998 ns/iter (± 1626889) 0.95
es/full/minify/libraries/lodash 106103006 ns/iter (± 773713) 111109932 ns/iter (± 1530843) 0.95
es/full/minify/libraries/moment 52725682 ns/iter (± 592118) 53507537 ns/iter (± 1227270) 0.99
es/full/minify/libraries/react 19120542 ns/iter (± 145756) 19171912 ns/iter (± 81978) 1.00
es/full/minify/libraries/terser 242124583 ns/iter (± 1635163) 251208680 ns/iter (± 4291741) 0.96
es/full/minify/libraries/three 428249689 ns/iter (± 6562251) 454672576 ns/iter (± 4142426) 0.94
es/full/minify/libraries/typescript 2968406627 ns/iter (± 11229332) 3238737374 ns/iter (± 73251251) 0.92
es/full/minify/libraries/victory 617643325 ns/iter (± 11856387) 793488329 ns/iter (± 10685634) 0.78
es/full/minify/libraries/vue 128418971 ns/iter (± 814475) 143549528 ns/iter (± 2310210) 0.89
es/full/codegen/es3 27700 ns/iter (± 403) 26529 ns/iter (± 74) 1.04
es/full/codegen/es5 27722 ns/iter (± 50) 26622 ns/iter (± 64) 1.04
es/full/codegen/es2015 27689 ns/iter (± 89) 26650 ns/iter (± 212) 1.04
es/full/codegen/es2016 27595 ns/iter (± 96) 26630 ns/iter (± 68) 1.04
es/full/codegen/es2017 27611 ns/iter (± 91) 26629 ns/iter (± 47) 1.04
es/full/codegen/es2018 27694 ns/iter (± 67) 26595 ns/iter (± 77) 1.04
es/full/codegen/es2019 27688 ns/iter (± 77) 26649 ns/iter (± 69) 1.04
es/full/codegen/es2020 27684 ns/iter (± 52) 26698 ns/iter (± 66) 1.04
es/full/all/es3 167936485 ns/iter (± 4416968) 170866231 ns/iter (± 3078956) 0.98
es/full/all/es5 162445588 ns/iter (± 3013258) 161740316 ns/iter (± 2594528) 1.00
es/full/all/es2015 125682902 ns/iter (± 1057157) 122820333 ns/iter (± 1158181) 1.02
es/full/all/es2016 122800760 ns/iter (± 1265481) 122270645 ns/iter (± 743990) 1.00
es/full/all/es2017 122164036 ns/iter (± 748673) 120643350 ns/iter (± 725209) 1.01
es/full/all/es2018 119882920 ns/iter (± 749226) 118653013 ns/iter (± 1320074) 1.01
es/full/all/es2019 118994404 ns/iter (± 1046235) 118339552 ns/iter (± 913277) 1.01
es/full/all/es2020 115215783 ns/iter (± 460102) 113753284 ns/iter (± 1005697) 1.01
es/full/parser 535140 ns/iter (± 7272) 528019 ns/iter (± 10062) 1.01
es/full/base/fixer 21879 ns/iter (± 50) 21940 ns/iter (± 32) 1.00
es/full/base/resolver_and_hygiene 82155 ns/iter (± 210) 81437 ns/iter (± 209) 1.01
serialization of ast node 123 ns/iter (± 0) 123 ns/iter (± 0) 1
serialization of serde 129 ns/iter (± 0) 130 ns/iter (± 0) 0.99
css/minify/libraries/bootstrap 28076405 ns/iter (± 88240) 27971932 ns/iter (± 129151) 1.00
css/visitor/compare/clone 2057083 ns/iter (± 20104) 2077983 ns/iter (± 13131) 0.99
css/visitor/compare/visit_mut_span 2268415 ns/iter (± 5517) 2258084 ns/iter (± 7401) 1.00
css/visitor/compare/visit_mut_span_panic 2305193 ns/iter (± 7346) 2318714 ns/iter (± 8771) 0.99
css/visitor/compare/fold_span 3053015 ns/iter (± 20366) 3007984 ns/iter (± 21390) 1.01
css/visitor/compare/fold_span_panic 3190846 ns/iter (± 21442) 3156876 ns/iter (± 18124) 1.01
css/lexer/bootstrap_5_1_3 5231842 ns/iter (± 4936) 5186273 ns/iter (± 2810) 1.01
css/lexer/foundation_6_7_4 4450775 ns/iter (± 3184) 4413012 ns/iter (± 2985) 1.01
css/lexer/tailwind_3_1_1 843767 ns/iter (± 1096) 836960 ns/iter (± 196) 1.01
css/parser/bootstrap_5_1_3 21641687 ns/iter (± 38065) 21744012 ns/iter (± 134916) 1.00
css/parser/foundation_6_7_4 17268291 ns/iter (± 55554) 17346104 ns/iter (± 15732) 1.00
css/parser/tailwind_3_1_1 3312720 ns/iter (± 1617) 3313868 ns/iter (± 3714) 1.00
es/codegen/colors 329641 ns/iter (± 186890) 321849 ns/iter (± 181531) 1.02
es/codegen/large 1226691 ns/iter (± 629265) 1219965 ns/iter (± 634838) 1.01
es/codegen/with-parser/colors 48046 ns/iter (± 432) 48282 ns/iter (± 608) 1.00
es/codegen/with-parser/large 534770 ns/iter (± 1605) 533875 ns/iter (± 2059) 1.00
es/minify/libraries/antd 1387543551 ns/iter (± 33872454) 1475233260 ns/iter (± 22658009) 0.94
es/minify/libraries/d3 249429193 ns/iter (± 4467862) 253724941 ns/iter (± 2475159) 0.98
es/minify/libraries/echarts 1040666470 ns/iter (± 11721688) 1117672957 ns/iter (± 10618632) 0.93
es/minify/libraries/jquery 77531324 ns/iter (± 1167169) 78307415 ns/iter (± 573401) 0.99
es/minify/libraries/lodash 94371098 ns/iter (± 749553) 95100004 ns/iter (± 1250119) 0.99
es/minify/libraries/moment 46054620 ns/iter (± 160154) 46049204 ns/iter (± 234592) 1.00
es/minify/libraries/react 17026582 ns/iter (± 98095) 16960100 ns/iter (± 137496) 1.00
es/minify/libraries/terser 213209059 ns/iter (± 3967607) 219602610 ns/iter (± 7583933) 0.97
es/minify/libraries/three 354575031 ns/iter (± 7355843) 365792737 ns/iter (± 5002166) 0.97
es/minify/libraries/typescript 2576189505 ns/iter (± 25708150) 2733724894 ns/iter (± 18121927) 0.94
es/minify/libraries/victory 539476865 ns/iter (± 10328991) 684709389 ns/iter (± 26807209) 0.79
es/minify/libraries/vue 114644700 ns/iter (± 717352) 126464301 ns/iter (± 3291499) 0.91
es/visitor/compare/clone 2401928 ns/iter (± 9453) 2488996 ns/iter (± 39222) 0.97
es/visitor/compare/visit_mut_span 2827414 ns/iter (± 6715) 2889490 ns/iter (± 50789) 0.98
es/visitor/compare/visit_mut_span_panic 2844623 ns/iter (± 4073) 2912434 ns/iter (± 37569) 0.98
es/visitor/compare/fold_span 3932605 ns/iter (± 12003) 4198565 ns/iter (± 153347) 0.94
es/visitor/compare/fold_span_panic 4104308 ns/iter (± 10671) 4453213 ns/iter (± 56303) 0.92
es/lexer/colors 17345 ns/iter (± 19) 17212 ns/iter (± 35) 1.01
es/lexer/angular 8275971 ns/iter (± 2855) 8243622 ns/iter (± 3635) 1.00
es/lexer/backbone 1084373 ns/iter (± 418) 1080120 ns/iter (± 955) 1.00
es/lexer/jquery 6005464 ns/iter (± 3554) 5979262 ns/iter (± 3687) 1.00
es/lexer/jquery mobile 9249615 ns/iter (± 2720) 9212373 ns/iter (± 6716) 1.00
es/lexer/mootools 4698084 ns/iter (± 3926) 4680171 ns/iter (± 2874) 1.00
es/lexer/underscore 902752 ns/iter (± 1474) 898195 ns/iter (± 432) 1.01
es/lexer/three 27934319 ns/iter (± 25942) 27951777 ns/iter (± 28460) 1.00
es/lexer/yui 5074598 ns/iter (± 4112) 5052424 ns/iter (± 2260) 1.00
es/parser/colors 30671 ns/iter (± 44) 30864 ns/iter (± 152) 0.99
es/parser/angular 15759232 ns/iter (± 142751) 17774296 ns/iter (± 383211) 0.89
es/parser/backbone 2307153 ns/iter (± 13910) 2318906 ns/iter (± 10991) 0.99
es/parser/jquery 12411560 ns/iter (± 79545) 12434470 ns/iter (± 197027) 1.00
es/parser/jquery mobile 19581639 ns/iter (± 163480) 19802903 ns/iter (± 1190585) 0.99
es/parser/mootools 9535439 ns/iter (± 32374) 9874738 ns/iter (± 266294) 0.97
es/parser/underscore 1960715 ns/iter (± 11904) 1958307 ns/iter (± 12350) 1.00
es/parser/three 56215568 ns/iter (± 1136615) 61827979 ns/iter (± 276291) 0.91
es/parser/yui 9568400 ns/iter (± 42993) 9599365 ns/iter (± 62613) 1.00
es/preset-env/usage/builtin_type 140386 ns/iter (± 31690) 140555 ns/iter (± 31675) 1.00
es/preset-env/usage/property 20628 ns/iter (± 51) 21154 ns/iter (± 267) 0.98
es/resolver/typescript 112097389 ns/iter (± 1889692) 122156379 ns/iter (± 1525447) 0.92
es/fixer/typescript 84007228 ns/iter (± 470048) 93783815 ns/iter (± 949253) 0.90
es/hygiene/typescript 173760293 ns/iter (± 1336403) 200089317 ns/iter (± 2427147) 0.87
es/resolver_with_hygiene/typescript 301523661 ns/iter (± 2024248) 334588889 ns/iter (± 2834833) 0.90
es/visitor/base-perf/module_clone 75170 ns/iter (± 1371) 75398 ns/iter (± 1116) 1.00
es/visitor/base-perf/fold_empty 85890 ns/iter (± 1571) 86147 ns/iter (± 1081) 1.00
es/visitor/base-perf/fold_noop_impl_all 86267 ns/iter (± 1533) 85540 ns/iter (± 1993) 1.01
es/visitor/base-perf/fold_noop_impl_vec 85730 ns/iter (± 631) 85818 ns/iter (± 1479) 1.00
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 56 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 60 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 106 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 104 ns/iter (± 0) 110 ns/iter (± 0) 0.95
es/visitor/base-perf/visit_contains_this 3443 ns/iter (± 46) 3496 ns/iter (± 72) 0.98
es/base/parallel/resolver/typescript 5218234552 ns/iter (± 330397332) 5704018693 ns/iter (± 513066361) 0.91
es/base/parallel/hygiene/typescript 2148690137 ns/iter (± 63315695) 2381543108 ns/iter (± 17608699) 0.90
misc/visitors/time-complexity/time 5 101 ns/iter (± 0) 101 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 314 ns/iter (± 10) 316 ns/iter (± 0) 0.99
misc/visitors/time-complexity/time 15 651 ns/iter (± 6) 658 ns/iter (± 8) 0.99
misc/visitors/time-complexity/time 20 1261 ns/iter (± 2) 1209 ns/iter (± 1) 1.04
misc/visitors/time-complexity/time 40 6575 ns/iter (± 21) 6641 ns/iter (± 17) 0.99
misc/visitors/time-complexity/time 60 17113 ns/iter (± 201) 17247 ns/iter (± 133) 0.99
es/full-target/es2016 188939 ns/iter (± 626) 188112 ns/iter (± 776) 1.00
es/full-target/es2017 184433 ns/iter (± 514) 183386 ns/iter (± 584) 1.01
es/full-target/es2018 172879 ns/iter (± 701) 171793 ns/iter (± 372) 1.01
es2020_nullish_coalescing 67087 ns/iter (± 264) 66450 ns/iter (± 214) 1.01
es2020_optional_chaining 96975 ns/iter (± 5481) 95400 ns/iter (± 1544) 1.02
es2022_class_properties 94691 ns/iter (± 220) 94238 ns/iter (± 159) 1.00
es2018_object_rest_spread 71341 ns/iter (± 242) 70899 ns/iter (± 154) 1.01
es2019_optional_catch_binding 61116 ns/iter (± 163) 60833 ns/iter (± 125) 1.00
es2017_async_to_generator 61729 ns/iter (± 138) 61148 ns/iter (± 417) 1.01
es2016_exponentiation 65226 ns/iter (± 160) 64602 ns/iter (± 155) 1.01
es2015_arrow 70464 ns/iter (± 314) 69990 ns/iter (± 385) 1.01
es2015_block_scoped_fn 66541 ns/iter (± 163) 66073 ns/iter (± 371) 1.01
es2015_block_scoping 154625 ns/iter (± 6783) 156659 ns/iter (± 10047) 0.99
es2015_classes 116973 ns/iter (± 488) 116622 ns/iter (± 461) 1.00
es2015_computed_props 61712 ns/iter (± 121) 60989 ns/iter (± 565) 1.01
es2015_destructuring 116582 ns/iter (± 378) 114986 ns/iter (± 270) 1.01
es2015_duplicate_keys 64370 ns/iter (± 186) 63430 ns/iter (± 1515) 1.01
es2015_parameters 79788 ns/iter (± 329) 78502 ns/iter (± 200) 1.02
es2015_fn_name 66332 ns/iter (± 498) 66104 ns/iter (± 486) 1.00
es2015_for_of 64722 ns/iter (± 232) 63515 ns/iter (± 92) 1.02
es2015_instanceof 63266 ns/iter (± 249) 62499 ns/iter (± 104) 1.01
es2015_shorthand_property 61281 ns/iter (± 252) 60565 ns/iter (± 124) 1.01
es2015_spread 61164 ns/iter (± 185) 60266 ns/iter (± 84) 1.01
es2015_sticky_regex 62591 ns/iter (± 258) 61630 ns/iter (± 77) 1.02
es2015_typeof_symbol 62561 ns/iter (± 241) 61924 ns/iter (± 118) 1.01
es/transform/baseline/base 52319 ns/iter (± 164) 51198 ns/iter (± 80) 1.02
es/transform/baseline/common_reserved_word 63011 ns/iter (± 190) 62207 ns/iter (± 152) 1.01
es/transform/baseline/common_typescript 142819 ns/iter (± 301) 141506 ns/iter (± 183) 1.01
es/target/es3 169589 ns/iter (± 498) 169325 ns/iter (± 283) 1.00
es/target/es2015 628183 ns/iter (± 1868) 628282 ns/iter (± 1289) 1.00
es/target/es2016 65371 ns/iter (± 228) 64512 ns/iter (± 91) 1.01
es/target/es2017 62272 ns/iter (± 429) 61174 ns/iter (± 113) 1.02
es/target/es2018 81831 ns/iter (± 321) 81460 ns/iter (± 129) 1.00
es/target/es2020 134007 ns/iter (± 402) 133076 ns/iter (± 247) 1.01
babelify-only 669635 ns/iter (± 1905) 679732 ns/iter (± 3553) 0.99
parse_and_babelify_angular 43347803 ns/iter (± 2027927) 45771076 ns/iter (± 907330) 0.95
parse_and_babelify_backbone 5422474 ns/iter (± 188718) 5443004 ns/iter (± 36539) 1.00
parse_and_babelify_jquery 31165471 ns/iter (± 596761) 32612457 ns/iter (± 320043) 0.96
parse_and_babelify_jquery_mobile 51443466 ns/iter (± 568283) 55355852 ns/iter (± 487947) 0.93
parse_and_babelify_mootools 30272877 ns/iter (± 1021664) 33584171 ns/iter (± 372156) 0.90
parse_and_babelify_underscore 4300409 ns/iter (± 61024) 4424849 ns/iter (± 24214) 0.97
parse_and_babelify_yui 30637182 ns/iter (± 1612277) 33598826 ns/iter (± 546994) 0.91
html/minify/document/css_spec 41233807 ns/iter (± 198955) 42228219 ns/iter (± 335908) 0.98
html/minify/document/github 17517454 ns/iter (± 110495) 17525253 ns/iter (± 15846) 1.00
html/minify/document/stackoverflow 15682075 ns/iter (± 33377) 15706423 ns/iter (± 35423) 1.00
html/minify/document_fragment/css_spec 39622765 ns/iter (± 207865) 40025995 ns/iter (± 145353) 0.99
html/minify/document_fragment/github 16748899 ns/iter (± 45872) 16833375 ns/iter (± 41656) 0.99
html/minify/document_fragment/stackoverflow 15159574 ns/iter (± 22442) 15276537 ns/iter (± 29416) 0.99
html/document/visitor/compare/clone 342486 ns/iter (± 1644) 337785 ns/iter (± 1647) 1.01
html/document/visitor/compare/visit_mut_span 361894 ns/iter (± 1520) 364370 ns/iter (± 1439) 0.99
html/document/visitor/compare/visit_mut_span_panic 376348 ns/iter (± 1983) 374998 ns/iter (± 1795) 1.00
html/document/visitor/compare/fold_span 408632 ns/iter (± 2082) 401529 ns/iter (± 1686) 1.02
html/document/visitor/compare/fold_span_panic 463786 ns/iter (± 1616) 458568 ns/iter (± 1914) 1.01
html/document_fragment/visitor/compare/clone 341588 ns/iter (± 1578) 340596 ns/iter (± 994) 1.00
html/document_fragment/visitor/compare/visit_mut_span 362223 ns/iter (± 1439) 370552 ns/iter (± 2252) 0.98
html/document_fragment/visitor/compare/visit_mut_span_panic 375715 ns/iter (± 1859) 373013 ns/iter (± 1662) 1.01
html/document_fragment/visitor/compare/fold_span 406767 ns/iter (± 1733) 405913 ns/iter (± 2463) 1.00
html/document_fragment/visitor/compare/fold_span_panic 461013 ns/iter (± 2572) 458256 ns/iter (± 1690) 1.01
html/lexer/css_2021_spec 15405006 ns/iter (± 40672) 15511631 ns/iter (± 68961) 0.99
html/lexer/github_com_17_05_2022 5984813 ns/iter (± 10799) 6020929 ns/iter (± 5199) 0.99
html/lexer/stackoverflow_com_17_05_2022 5593568 ns/iter (± 12171) 5634262 ns/iter (± 2849) 0.99
html/parser/parser_document/css_2021_spec 25173373 ns/iter (± 84095) 25645501 ns/iter (± 164092) 0.98
html/parser/parser_document/github_com_17_05_2022 8708272 ns/iter (± 39818) 8737594 ns/iter (± 8425) 1.00
html/parser/parser_document/stackoverflow_com_17_05_2022 7665727 ns/iter (± 16709) 7695522 ns/iter (± 3801) 1.00
html/parser/parser_document_fragment/css_2021_spec 25188798 ns/iter (± 478290) 25664683 ns/iter (± 252470) 0.98
html/parser/parser_document_fragment/github_com_17_05_2022 8754893 ns/iter (± 20463) 8771167 ns/iter (± 9675) 1.00
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7713012 ns/iter (± 14114) 7727058 ns/iter (± 4490) 1.00

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

Please sign in to comment.