Skip to content

Commit

Permalink
refactor(css/compat): Merge nesting into the compiler (#6686)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Dec 20, 2022
1 parent 4a56d02 commit 1840e74
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 81 deletions.
28 changes: 25 additions & 3 deletions crates/swc_css_compat/src/compiler/mod.rs
@@ -1,4 +1,4 @@
use swc_common::{Spanned, DUMMY_SP};
use swc_common::{util::take::Take, Spanned, DUMMY_SP};
use swc_css_ast::{
AbsoluteColorBase, AtRule, ComponentValue, CompoundSelector, MediaAnd, MediaCondition,
MediaConditionAllType, MediaConditionWithoutOr, MediaInParens, MediaQuery, Rule,
Expand All @@ -16,8 +16,8 @@ mod color_space_separated_parameters;
mod custom_media;
mod legacy_rgb_and_hsl;
mod media_query_ranges;
mod nesting;
mod selector_not;
mod utils;

/// Compiles a modern CSS file to a CSS file which works with old browsers.
#[derive(Debug)]
Expand Down Expand Up @@ -88,7 +88,29 @@ impl VisitMut for Compiler {
}

fn visit_mut_rules(&mut self, n: &mut Vec<Rule>) {
n.visit_mut_children_with(self);
if self.c.process.contains(Features::NESTING) {
let mut new = vec![];

for n in n.take() {
match n {
Rule::QualifiedRule(mut n) => {
let mut rules = self.extract_nested_rules(&mut n);

rules.visit_mut_with(self);

new.push(Rule::QualifiedRule(n));
new.extend(rules);
}
_ => {
new.push(n);
}
}
}

*n = new;
} else {
n.visit_mut_children_with(self);
}

if self.c.process.contains(Features::CUSTOM_MEDIA) {
self.custom_media.process_rules(n);
Expand Down
Expand Up @@ -2,15 +2,10 @@ use std::iter::once;

use swc_common::{util::take::Take, DUMMY_SP};
use swc_css_ast::*;
use swc_css_visit::{VisitMut, VisitMutWith};

pub fn nesting() -> impl VisitMut {
NestingHandler {}
}

struct NestingHandler {}
use crate::compiler::Compiler;

impl NestingHandler {
impl Compiler {
fn process_subclass_selectors(
&mut self,
prelude: &SelectorList,
Expand Down Expand Up @@ -225,7 +220,7 @@ impl NestingHandler {
}
}

fn extract_nested_rules(&mut self, rule: &mut QualifiedRule) -> Vec<Rule> {
pub(crate) fn extract_nested_rules(&mut self, rule: &mut QualifiedRule) -> Vec<Rule> {
let mut nested_rules = vec![];
let mut block_values = vec![];

Expand Down Expand Up @@ -262,7 +257,7 @@ impl NestingHandler {
nested_of_media.extend(
once(Rule::QualifiedRule(q))
.chain(rules.into_iter())
.map(rule_to_component_value),
.map(From::from),
);
}

Expand Down Expand Up @@ -308,54 +303,3 @@ impl NestingHandler {
nested_rules
}
}

impl VisitMut for NestingHandler {
fn visit_mut_rules(&mut self, n: &mut Vec<Rule>) {
let mut new = vec![];

for n in n.take() {
match n {
Rule::QualifiedRule(mut n) => {
let mut rules = self.extract_nested_rules(&mut n);

rules.visit_mut_with(self);

new.push(Rule::QualifiedRule(n));
new.extend(rules);
}
_ => {
new.push(n);
}
}
}

*n = new;
}

fn visit_mut_component_values(&mut self, n: &mut Vec<ComponentValue>) {
let mut new = vec![];

for n in n.take() {
match n {
ComponentValue::QualifiedRule(mut n) => {
let mut rules = self.extract_nested_rules(&mut n);

rules.visit_mut_with(self);

new.push(ComponentValue::QualifiedRule(n));
new.extend(rules.into_iter().map(rule_to_component_value));
}

_ => {
new.push(n);
}
}
}

*n = new;
}
}

fn rule_to_component_value(rule: Rule) -> ComponentValue {
rule.into()
}
1 change: 0 additions & 1 deletion crates/swc_css_compat/src/compiler/utils.rs

This file was deleted.

1 change: 0 additions & 1 deletion crates/swc_css_compat/src/lib.rs
Expand Up @@ -5,4 +5,3 @@

pub mod compiler;
pub mod feature;
pub mod nesting;
19 changes: 6 additions & 13 deletions crates/swc_css_compat/tests/fixture.rs
Expand Up @@ -16,7 +16,6 @@ use swc_css_codegen::{
use swc_css_compat::{
compiler::{Compiler, Config},
feature::Features,
nesting::nesting,
};
use swc_css_parser::{parse_file, parser::ParserConfig};
use swc_css_visit::VisitMutWith;
Expand Down Expand Up @@ -54,18 +53,17 @@ fn print_stylesheet(ss: &Stylesheet) -> String {
s
}

fn test_nesting(input: PathBuf, suffix: Option<&str>) {
let parent = input.parent().unwrap();
let output = match suffix {
Some(suffix) => parent.join("output.".to_owned() + suffix + ".css"),
_ => parent.join("output.css"),
};
#[testing::fixture("tests/nesting/**/*.css", exclude("expect.css"))]
fn test_nesting(input: PathBuf) {
let output = input.with_extension("expect.css");

testing::run_test(false, |cm, _| {
let fm = cm.load_file(&input).unwrap();
let mut ss = parse_stylesheet(&fm);

ss.visit_mut_with(&mut nesting());
ss.visit_mut_with(&mut Compiler::new(Config {
process: Features::NESTING,
}));

let s = print_stylesheet(&ss);

Expand All @@ -76,11 +74,6 @@ fn test_nesting(input: PathBuf, suffix: Option<&str>) {
.unwrap();
}

#[testing::fixture("tests/nesting/**/input.css")]
fn test_nesting_without_env(input: PathBuf) {
test_nesting(input, None)
}

#[testing::fixture("tests/custom-media-query/**/*.css", exclude("expect.css"))]
fn test_custom_media_query(input: PathBuf) {
let output = input.with_extension("expect.css");
Expand Down
10 changes: 7 additions & 3 deletions crates/swc_css_modules/tests/with_compat.rs
Expand Up @@ -13,7 +13,10 @@ use swc_css_codegen::{
writer::basic::{BasicCssWriter, BasicCssWriterConfig},
CodegenConfig, Emit,
};
use swc_css_compat::nesting::nesting;
use swc_css_compat::{
compiler::{Compiler, Config},
feature::Features,
};
use swc_css_parser::{parse_file, parser::ParserConfig};
use swc_css_visit::VisitMutWith;
use testing::NormalizedOutput;
Expand Down Expand Up @@ -48,8 +51,9 @@ fn test_full(input: PathBuf, suffix: Option<&str>) {
}

swc_css_modules::compile(&mut ss, TestConfig {});

ss.visit_mut_with(&mut nesting());
ss.visit_mut_with(&mut Compiler::new(Config {
process: Features::NESTING,
}));

let mut s = String::new();
{
Expand Down

1 comment on commit 1840e74

@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: 1840e74 Previous: 5016ebe Ratio
es/full/bugs-1 293231 ns/iter (± 15711) 297658 ns/iter (± 9582) 0.99
es/full/minify/libraries/antd 1710613536 ns/iter (± 14901094) 1669280982 ns/iter (± 20805963) 1.02
es/full/minify/libraries/d3 309623059 ns/iter (± 6651236) 313172207 ns/iter (± 8172187) 0.99
es/full/minify/libraries/echarts 1290946956 ns/iter (± 11033256) 1279254878 ns/iter (± 9647265) 1.01
es/full/minify/libraries/jquery 90690569 ns/iter (± 863626) 91071070 ns/iter (± 1254192) 1.00
es/full/minify/libraries/lodash 106942651 ns/iter (± 1053170) 109147061 ns/iter (± 1857001) 0.98
es/full/minify/libraries/moment 53234214 ns/iter (± 615894) 53839499 ns/iter (± 536029) 0.99
es/full/minify/libraries/react 19126944 ns/iter (± 193322) 19276835 ns/iter (± 229600) 0.99
es/full/minify/libraries/terser 252989493 ns/iter (± 3799455) 250090917 ns/iter (± 5325707) 1.01
es/full/minify/libraries/three 457103066 ns/iter (± 3044475) 455008819 ns/iter (± 8181317) 1.00
es/full/minify/libraries/typescript 3220572416 ns/iter (± 11084381) 3060628050 ns/iter (± 25005681) 1.05
es/full/minify/libraries/victory 690280064 ns/iter (± 9723936) 658698554 ns/iter (± 10618330) 1.05
es/full/minify/libraries/vue 130367089 ns/iter (± 620705) 132013646 ns/iter (± 1722101) 0.99
es/full/codegen/es3 27182 ns/iter (± 57) 27241 ns/iter (± 96) 1.00
es/full/codegen/es5 27205 ns/iter (± 42) 27204 ns/iter (± 57) 1.00
es/full/codegen/es2015 27188 ns/iter (± 37) 27199 ns/iter (± 46) 1.00
es/full/codegen/es2016 27229 ns/iter (± 77) 27214 ns/iter (± 59) 1.00
es/full/codegen/es2017 27206 ns/iter (± 51) 27240 ns/iter (± 46) 1.00
es/full/codegen/es2018 27275 ns/iter (± 32) 27193 ns/iter (± 48) 1.00
es/full/codegen/es2019 27277 ns/iter (± 60) 27231 ns/iter (± 68) 1.00
es/full/codegen/es2020 27309 ns/iter (± 81) 27201 ns/iter (± 51) 1.00
es/full/all/es3 167775373 ns/iter (± 3335304) 168799051 ns/iter (± 2600412) 0.99
es/full/all/es5 159372897 ns/iter (± 2291898) 161326142 ns/iter (± 2354895) 0.99
es/full/all/es2015 119216279 ns/iter (± 1362335) 123506562 ns/iter (± 2020573) 0.97
es/full/all/es2016 118537641 ns/iter (± 766557) 121370650 ns/iter (± 1764286) 0.98
es/full/all/es2017 117702201 ns/iter (± 512278) 120385688 ns/iter (± 1669969) 0.98
es/full/all/es2018 116375646 ns/iter (± 647603) 119014580 ns/iter (± 4833686) 0.98
es/full/all/es2019 115720276 ns/iter (± 1288678) 119066639 ns/iter (± 1834719) 0.97
es/full/all/es2020 111008545 ns/iter (± 466392) 115696038 ns/iter (± 2544275) 0.96
es/full/parser 515326 ns/iter (± 7372) 513721 ns/iter (± 9443) 1.00
es/full/base/fixer 22350 ns/iter (± 28) 22257 ns/iter (± 14) 1.00
es/full/base/resolver_and_hygiene 77257 ns/iter (± 49) 77762 ns/iter (± 45) 0.99
serialization of ast node 119 ns/iter (± 0) 118 ns/iter (± 0) 1.01
serialization of serde 124 ns/iter (± 0) 124 ns/iter (± 0) 1
css/minify/libraries/bootstrap 27271491 ns/iter (± 43244) 27034098 ns/iter (± 111629) 1.01
css/visitor/compare/clone 2407206 ns/iter (± 14885) 2042810 ns/iter (± 3737) 1.18
css/visitor/compare/visit_mut_span 2633614 ns/iter (± 9922) 2248571 ns/iter (± 10794) 1.17
css/visitor/compare/visit_mut_span_panic 2693262 ns/iter (± 6882) 2342183 ns/iter (± 8559) 1.15
css/visitor/compare/fold_span 3434479 ns/iter (± 21963) 2963670 ns/iter (± 24079) 1.16
css/visitor/compare/fold_span_panic 3546844 ns/iter (± 24104) 3108289 ns/iter (± 14314) 1.14
css/lexer/bootstrap_5_1_3 5186315 ns/iter (± 23213) 5197189 ns/iter (± 9033) 1.00
css/lexer/foundation_6_7_4 4368771 ns/iter (± 13618) 4370466 ns/iter (± 2257) 1.00
css/lexer/tailwind_3_1_1 826295 ns/iter (± 702) 827842 ns/iter (± 304) 1.00
css/parser/bootstrap_5_1_3 20968790 ns/iter (± 87365) 20870881 ns/iter (± 112439) 1.00
css/parser/foundation_6_7_4 16640485 ns/iter (± 34005) 16612951 ns/iter (± 39684) 1.00
css/parser/tailwind_3_1_1 3218562 ns/iter (± 2745) 3210755 ns/iter (± 2733) 1.00
es/codegen/colors 323989 ns/iter (± 182941) 331334 ns/iter (± 186803) 0.98
es/codegen/large 1262331 ns/iter (± 657502) 1239583 ns/iter (± 632022) 1.02
es/codegen/with-parser/colors 46081 ns/iter (± 301) 46333 ns/iter (± 377) 0.99
es/codegen/with-parser/large 516780 ns/iter (± 1734) 515997 ns/iter (± 1089) 1.00
es/minify/libraries/antd 1495694236 ns/iter (± 11430608) 1436374213 ns/iter (± 21341566) 1.04
es/minify/libraries/d3 256854298 ns/iter (± 3339827) 260096415 ns/iter (± 3424783) 0.99
es/minify/libraries/echarts 1113671935 ns/iter (± 9806579) 1101609362 ns/iter (± 22888915) 1.01
es/minify/libraries/jquery 78441608 ns/iter (± 363054) 79657172 ns/iter (± 1270422) 0.98
es/minify/libraries/lodash 96366634 ns/iter (± 546110) 96771299 ns/iter (± 2188349) 1.00
es/minify/libraries/moment 45790489 ns/iter (± 186364) 47050739 ns/iter (± 851438) 0.97
es/minify/libraries/react 16993561 ns/iter (± 135666) 17214580 ns/iter (± 212573) 0.99
es/minify/libraries/terser 212594708 ns/iter (± 2316929) 218183817 ns/iter (± 2891007) 0.97
es/minify/libraries/three 370262582 ns/iter (± 3916068) 384583950 ns/iter (± 5006531) 0.96
es/minify/libraries/typescript 2788538330 ns/iter (± 9831919) 2662558546 ns/iter (± 23117137) 1.05
es/minify/libraries/victory 581124728 ns/iter (± 9650952) 618983600 ns/iter (± 12309526) 0.94
es/minify/libraries/vue 116073895 ns/iter (± 567692) 118555426 ns/iter (± 1997114) 0.98
es/visitor/compare/clone 2785883 ns/iter (± 87458) 2401030 ns/iter (± 5778) 1.16
es/visitor/compare/visit_mut_span 3188986 ns/iter (± 4340) 2835714 ns/iter (± 4318) 1.12
es/visitor/compare/visit_mut_span_panic 3234086 ns/iter (± 8571) 2866366 ns/iter (± 10213) 1.13
es/visitor/compare/fold_span 4388669 ns/iter (± 10566) 3981060 ns/iter (± 12234) 1.10
es/visitor/compare/fold_span_panic 4534863 ns/iter (± 27016) 4130783 ns/iter (± 7836) 1.10
es/lexer/colors 17431 ns/iter (± 51) 17309 ns/iter (± 53) 1.01
es/lexer/angular 8224828 ns/iter (± 5655) 8229291 ns/iter (± 14117) 1.00
es/lexer/backbone 1072649 ns/iter (± 514) 1073117 ns/iter (± 2705) 1.00
es/lexer/jquery 5942689 ns/iter (± 6457) 5944166 ns/iter (± 12989) 1.00
es/lexer/jquery mobile 9161383 ns/iter (± 12212) 9197804 ns/iter (± 18004) 1.00
es/lexer/mootools 4668147 ns/iter (± 7535) 4662707 ns/iter (± 6646) 1.00
es/lexer/underscore 897877 ns/iter (± 702) 898589 ns/iter (± 1548) 1.00
es/lexer/three 27760377 ns/iter (± 29471) 27772699 ns/iter (± 37342) 1.00
es/lexer/yui 5041231 ns/iter (± 5252) 5039311 ns/iter (± 4000) 1.00
es/parser/colors 30796 ns/iter (± 533) 30842 ns/iter (± 113) 1.00
es/parser/angular 15548058 ns/iter (± 128100) 15680293 ns/iter (± 317579) 0.99
es/parser/backbone 2329011 ns/iter (± 16062) 2312617 ns/iter (± 12920) 1.01
es/parser/jquery 12578383 ns/iter (± 91249) 12648813 ns/iter (± 87918) 0.99
es/parser/jquery mobile 20540731 ns/iter (± 297231) 20337398 ns/iter (± 312791) 1.01
es/parser/mootools 9643635 ns/iter (± 31021) 9642924 ns/iter (± 21732) 1.00
es/parser/underscore 1971098 ns/iter (± 11376) 1958241 ns/iter (± 10298) 1.01
es/parser/three 58175685 ns/iter (± 683167) 60283555 ns/iter (± 343252) 0.97
es/parser/yui 9612864 ns/iter (± 63228) 9578413 ns/iter (± 103225) 1.00
es/preset-env/usage/builtin_type 140601 ns/iter (± 31987) 144002 ns/iter (± 33055) 0.98
es/preset-env/usage/property 21856 ns/iter (± 87) 22074 ns/iter (± 59) 0.99
es/resolver/typescript 126899718 ns/iter (± 1202669) 109568369 ns/iter (± 1316090) 1.16
es/fixer/typescript 101772023 ns/iter (± 1339855) 87203671 ns/iter (± 1383645) 1.17
es/hygiene/typescript 196897357 ns/iter (± 1165620) 170070899 ns/iter (± 1946174) 1.16
es/resolver_with_hygiene/typescript 324796068 ns/iter (± 1481800) 300464833 ns/iter (± 1351920) 1.08
es/visitor/base-perf/module_clone 75733 ns/iter (± 1313) 75623 ns/iter (± 1542) 1.00
es/visitor/base-perf/fold_empty 86153 ns/iter (± 1858) 85810 ns/iter (± 1124) 1.00
es/visitor/base-perf/fold_noop_impl_all 86453 ns/iter (± 1574) 86010 ns/iter (± 1609) 1.01
es/visitor/base-perf/fold_noop_impl_vec 87427 ns/iter (± 1440) 86047 ns/iter (± 1522) 1.02
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 57 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 60 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_boxed 111 ns/iter (± 0) 103 ns/iter (± 0) 1.08
es/visitor/base-perf/boxing_unboxed 102 ns/iter (± 0) 103 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_contains_this 3628 ns/iter (± 46) 3628 ns/iter (± 88) 1
es/base/parallel/resolver/typescript 5732192265 ns/iter (± 560170911) 5458201442 ns/iter (± 491317083) 1.05
es/base/parallel/hygiene/typescript 2277909664 ns/iter (± 32572320) 2000191981 ns/iter (± 41814069) 1.14
misc/visitors/time-complexity/time 5 102 ns/iter (± 0) 102 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 330 ns/iter (± 0) 317 ns/iter (± 7) 1.04
misc/visitors/time-complexity/time 15 667 ns/iter (± 0) 648 ns/iter (± 0) 1.03
misc/visitors/time-complexity/time 20 1244 ns/iter (± 2) 1230 ns/iter (± 5) 1.01
misc/visitors/time-complexity/time 40 6726 ns/iter (± 110) 6631 ns/iter (± 22) 1.01
misc/visitors/time-complexity/time 60 17041 ns/iter (± 36) 17053 ns/iter (± 22) 1.00
es/full-target/es2016 189958 ns/iter (± 650) 188351 ns/iter (± 577) 1.01
es/full-target/es2017 184024 ns/iter (± 546) 183391 ns/iter (± 259) 1.00
es/full-target/es2018 173179 ns/iter (± 401) 172232 ns/iter (± 356) 1.01
es2020_nullish_coalescing 66722 ns/iter (± 137) 66920 ns/iter (± 135) 1.00
es2020_optional_chaining 96790 ns/iter (± 450) 96378 ns/iter (± 6851) 1.00
es2022_class_properties 93829 ns/iter (± 180) 93998 ns/iter (± 161) 1.00
es2018_object_rest_spread 71091 ns/iter (± 130) 71538 ns/iter (± 187) 0.99
es2019_optional_catch_binding 61231 ns/iter (± 95) 61584 ns/iter (± 114) 0.99
es2017_async_to_generator 61402 ns/iter (± 107) 61558 ns/iter (± 124) 1.00
es2016_exponentiation 64950 ns/iter (± 81) 65059 ns/iter (± 63) 1.00
es2015_arrow 69871 ns/iter (± 228) 70214 ns/iter (± 259) 1.00
es2015_block_scoped_fn 65560 ns/iter (± 101) 66235 ns/iter (± 93) 0.99
es2015_block_scoping 154135 ns/iter (± 10995) 144186 ns/iter (± 9616) 1.07
es2015_classes 116163 ns/iter (± 369) 116115 ns/iter (± 491) 1.00
es2015_computed_props 61016 ns/iter (± 114) 60938 ns/iter (± 85) 1.00
es2015_destructuring 116063 ns/iter (± 250) 115186 ns/iter (± 252) 1.01
es2015_duplicate_keys 63795 ns/iter (± 87) 63988 ns/iter (± 105) 1.00
es2015_parameters 79323 ns/iter (± 266) 79426 ns/iter (± 152) 1.00
es2015_fn_name 66512 ns/iter (± 485) 66447 ns/iter (± 436) 1.00
es2015_for_of 64390 ns/iter (± 151) 64806 ns/iter (± 88) 0.99
es2015_instanceof 63090 ns/iter (± 108) 63193 ns/iter (± 124) 1.00
es2015_shorthand_property 61069 ns/iter (± 127) 60990 ns/iter (± 107) 1.00
es2015_spread 60956 ns/iter (± 84) 60974 ns/iter (± 135) 1.00
es2015_sticky_regex 62199 ns/iter (± 88) 62117 ns/iter (± 109) 1.00
es2015_typeof_symbol 62153 ns/iter (± 126) 62137 ns/iter (± 107) 1.00
es/transform/baseline/base 51907 ns/iter (± 67) 51830 ns/iter (± 97) 1.00
es/transform/baseline/common_reserved_word 62437 ns/iter (± 95) 62546 ns/iter (± 91) 1.00
es/transform/baseline/common_typescript 146450 ns/iter (± 3740) 144433 ns/iter (± 2064) 1.01
es/target/es3 169188 ns/iter (± 563) 168573 ns/iter (± 236) 1.00
es/target/es2015 628798 ns/iter (± 1578) 628912 ns/iter (± 1080) 1.00
es/target/es2016 65148 ns/iter (± 120) 64893 ns/iter (± 99) 1.00
es/target/es2017 61595 ns/iter (± 40) 61551 ns/iter (± 115) 1.00
es/target/es2018 81195 ns/iter (± 67) 81462 ns/iter (± 115) 1.00
es/target/es2020 133660 ns/iter (± 240) 132668 ns/iter (± 312) 1.01
babelify-only 677728 ns/iter (± 5770) 673264 ns/iter (± 1172) 1.01
parse_and_babelify_angular 47926789 ns/iter (± 1159843) 43175982 ns/iter (± 1365022) 1.11
parse_and_babelify_backbone 5680903 ns/iter (± 54610) 5384129 ns/iter (± 49569) 1.06
parse_and_babelify_jquery 36709565 ns/iter (± 224337) 32433382 ns/iter (± 701159) 1.13
parse_and_babelify_jquery_mobile 61372390 ns/iter (± 541001) 55098727 ns/iter (± 622366) 1.11
parse_and_babelify_mootools 35301104 ns/iter (± 1199757) 33499468 ns/iter (± 422309) 1.05
parse_and_babelify_underscore 4479403 ns/iter (± 28241) 4316534 ns/iter (± 44421) 1.04
parse_and_babelify_yui 36371825 ns/iter (± 391962) 32727226 ns/iter (± 953195) 1.11
html/minify/document/css_spec 45316921 ns/iter (± 164670) 42379376 ns/iter (± 486986) 1.07
html/minify/document/github 18029783 ns/iter (± 50997) 17379516 ns/iter (± 72025) 1.04
html/minify/document/stackoverflow 15936001 ns/iter (± 128715) 15467580 ns/iter (± 61576) 1.03
html/minify/document_fragment/css_spec 43859835 ns/iter (± 316719) 39981613 ns/iter (± 189404) 1.10
html/minify/document_fragment/github 17057727 ns/iter (± 56124) 16628413 ns/iter (± 40729) 1.03
html/minify/document_fragment/stackoverflow 15361270 ns/iter (± 54678) 15189963 ns/iter (± 83644) 1.01
html/document/visitor/compare/clone 398579 ns/iter (± 3692) 338919 ns/iter (± 2048) 1.18
html/document/visitor/compare/visit_mut_span 437662 ns/iter (± 4211) 368317 ns/iter (± 1842) 1.19
html/document/visitor/compare/visit_mut_span_panic 448329 ns/iter (± 3235) 384627 ns/iter (± 1769) 1.17
html/document/visitor/compare/fold_span 474919 ns/iter (± 2207) 410743 ns/iter (± 1146) 1.16
html/document/visitor/compare/fold_span_panic 534906 ns/iter (± 4268) 462522 ns/iter (± 1418) 1.16
html/document_fragment/visitor/compare/clone 398826 ns/iter (± 4593) 339375 ns/iter (± 2291) 1.18
html/document_fragment/visitor/compare/visit_mut_span 430415 ns/iter (± 2690) 372487 ns/iter (± 1874) 1.16
html/document_fragment/visitor/compare/visit_mut_span_panic 440764 ns/iter (± 5594) 370145 ns/iter (± 1813) 1.19
html/document_fragment/visitor/compare/fold_span 471926 ns/iter (± 3112) 401624 ns/iter (± 1855) 1.18
html/document_fragment/visitor/compare/fold_span_panic 533765 ns/iter (± 4524) 460305 ns/iter (± 1369) 1.16
html/lexer/css_2021_spec 15555064 ns/iter (± 145537) 15563847 ns/iter (± 9756) 1.00
html/lexer/github_com_17_05_2022 6019265 ns/iter (± 7806) 6047454 ns/iter (± 3302) 1.00
html/lexer/stackoverflow_com_17_05_2022 5630911 ns/iter (± 12541) 5664506 ns/iter (± 5305) 0.99
html/parser/parser_document/css_2021_spec 26164515 ns/iter (± 258216) 25933224 ns/iter (± 192786) 1.01
html/parser/parser_document/github_com_17_05_2022 8920930 ns/iter (± 37152) 8793118 ns/iter (± 7477) 1.01
html/parser/parser_document/stackoverflow_com_17_05_2022 7824715 ns/iter (± 6013) 7767563 ns/iter (± 8963) 1.01
html/parser/parser_document_fragment/css_2021_spec 26209877 ns/iter (± 141493) 26053785 ns/iter (± 145496) 1.01
html/parser/parser_document_fragment/github_com_17_05_2022 8871787 ns/iter (± 13004) 8807313 ns/iter (± 10210) 1.01
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7805244 ns/iter (± 20214) 7774458 ns/iter (± 6433) 1.00

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

Please sign in to comment.