Skip to content

Commit

Permalink
fix(css/prefixer): Reduce the number of vars in debug build (#4078)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Mar 18, 2022
1 parent 0087627 commit 4af5e6d
Showing 1 changed file with 38 additions and 27 deletions.
65 changes: 38 additions & 27 deletions crates/swc_stylis/src/prefixer.rs
@@ -1,5 +1,6 @@
use std::mem::take;

use swc_atoms::JsWord;
use swc_common::DUMMY_SP;
use swc_css_ast::*;
use swc_css_utils::{
Expand Down Expand Up @@ -195,6 +196,41 @@ struct Prefixer {
added_declarations: Vec<Declaration>,
}

impl Prefixer {
fn simple(&mut self, name: JsWord, val: JsWord, n: &Declaration) {
let val = ComponentValue::Ident(Ident {
span: DUMMY_SP,
value: val.clone(),
raw: val,
});
let name = DeclarationName::Ident(Ident {
span: DUMMY_SP,
value: name.clone(),
raw: name,
});
self.added_declarations.push(Declaration {
span: n.span,
name,
value: vec![val],
important: n.important.clone(),
});
}

fn same_name(&mut self, name: JsWord, n: &Declaration) {
let val = Ident {
span: DUMMY_SP,
value: name.clone(),
raw: name,
};
self.added_declarations.push(Declaration {
span: n.span,
name: n.name.clone(),
value: vec![ComponentValue::Ident(val)],
important: n.important.clone(),
});
}
}

pub enum Prefix {
Webkit,
Moz,
Expand Down Expand Up @@ -438,38 +474,13 @@ impl VisitMut for Prefixer {

macro_rules! simple {
($name:expr,$val:expr) => {{
let val = ComponentValue::Ident(Ident {
span: DUMMY_SP,
value: $val.into(),
raw: $val.into(),
});
let name = DeclarationName::Ident(Ident {
span: DUMMY_SP,
value: $name.into(),
raw: $name.into(),
});
self.added_declarations.push(Declaration {
span: n.span,
name,
value: vec![val],
important: n.important.clone(),
});
self.simple($name.into(), $val.into(), &n);
}};
}

macro_rules! same_name {
($name:expr) => {{
let val = Ident {
span: DUMMY_SP,
value: $name.into(),
raw: $name.into(),
};
self.added_declarations.push(Declaration {
span: n.span,
name: n.name.clone(),
value: vec![ComponentValue::Ident(val)],
important: n.important.clone(),
});
self.same_name($name.into(), &n);
}};
}

Expand Down

1 comment on commit 4af5e6d

@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: 4af5e6d Previous: 22d005e Ratio
base_tr_fixer 27568 ns/iter (± 759) 23875 ns/iter (± 321) 1.15
base_tr_resolver_and_hygiene 109296 ns/iter (± 20886) 94152 ns/iter (± 9275) 1.16
codegen_es2015 36838 ns/iter (± 1182) 31942 ns/iter (± 215) 1.15
codegen_es2016 36926 ns/iter (± 9025) 31978 ns/iter (± 190) 1.15
codegen_es2017 37011 ns/iter (± 540) 31964 ns/iter (± 146) 1.16
codegen_es2018 36829 ns/iter (± 895) 31986 ns/iter (± 161) 1.15
codegen_es2019 36817 ns/iter (± 686) 32033 ns/iter (± 235) 1.15
codegen_es2020 36874 ns/iter (± 469) 32097 ns/iter (± 189) 1.15
codegen_es3 36816 ns/iter (± 1106) 32084 ns/iter (± 259) 1.15
codegen_es5 36957 ns/iter (± 579) 32265 ns/iter (± 205) 1.15
full_es2015 160170060 ns/iter (± 14206509) 138829990 ns/iter (± 12564254) 1.15
full_es2016 160256343 ns/iter (± 9048024) 137861411 ns/iter (± 26164023) 1.16
full_es2017 158305920 ns/iter (± 4885505) 115570294 ns/iter (± 25362968) 1.37
full_es2018 157326968 ns/iter (± 4052768) 136708075 ns/iter (± 29436953) 1.15
full_es2019 156562603 ns/iter (± 12539646) 135563852 ns/iter (± 17240801) 1.15
full_es2020 149825691 ns/iter (± 4300400) 125049571 ns/iter (± 20593660) 1.20
full_es3 214378963 ns/iter (± 7756774) 185072106 ns/iter (± 5532830) 1.16
full_es5 201651363 ns/iter (± 7567238) 160486090 ns/iter (± 24456801) 1.26
parser 654631 ns/iter (± 11986) 567182 ns/iter (± 16171) 1.15
ser_ast_node 176 ns/iter (± 3) 128 ns/iter (± 3) 1.38
ser_serde 174 ns/iter (± 1) 126 ns/iter (± 7) 1.38
emit_colors 12284838 ns/iter (± 8727430) 10570818 ns/iter (± 7412132) 1.16
emit_large 63623528 ns/iter (± 87013664) 79517048 ns/iter (± 105495600) 0.80
base_clone 2956060 ns/iter (± 38291) 2348239 ns/iter (± 1414247) 1.26
fold_span 4708235 ns/iter (± 109379) 3418174 ns/iter (± 70767) 1.38
fold_span_panic 4896220 ns/iter (± 97883) 3607059 ns/iter (± 152328) 1.36
visit_mut_span 3391443 ns/iter (± 62366) 2481681 ns/iter (± 94231) 1.37
visit_mut_span_panic 3279911 ns/iter (± 76117) 2511820 ns/iter (± 52002) 1.31
usage_builtin_type 18912014 ns/iter (± 11763472) 15812144 ns/iter (± 9856917) 1.20
usage_property 454681 ns/iter (± 4838) 381450 ns/iter (± 2170) 1.19
boxing_boxed 160 ns/iter (± 0) 134 ns/iter (± 1) 1.19
boxing_boxed_clone 84 ns/iter (± 0) 69 ns/iter (± 0) 1.22
boxing_unboxed 143 ns/iter (± 2) 119 ns/iter (± 0) 1.20
boxing_unboxed_clone 76 ns/iter (± 0) 64 ns/iter (± 0) 1.19
time_10 386 ns/iter (± 5) 318 ns/iter (± 4) 1.21
time_15 820 ns/iter (± 14) 698 ns/iter (± 13) 1.17
time_20 1349 ns/iter (± 15) 1307 ns/iter (± 8) 1.03
time_40 4987 ns/iter (± 72) 7115 ns/iter (± 21) 0.70
time_5 118 ns/iter (± 1) 101 ns/iter (± 0) 1.17
time_60 10276 ns/iter (± 726) 16124 ns/iter (± 44) 0.64
total 0 ns/iter (± 0) 0 ns/iter (± 0) NaN

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

Please sign in to comment.