Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
refactor(ast): Make serde optional (#7138)
**Description:**

Turbopack does not use `serde` of swc AST types.
  • Loading branch information
kdy1 committed Mar 27, 2023
1 parent 3f2ba68 commit 30bc086
Show file tree
Hide file tree
Showing 52 changed files with 654 additions and 477 deletions.
1 change: 1 addition & 0 deletions bindings/binding_core_node/Cargo.toml
Expand Up @@ -59,6 +59,7 @@ tracing-subscriber = { version = "0.3.9", features = ["env-filter"] }
swc_core = { version = "0.69.20", features = [
"allocator_node",
"ecma_ast",
"ecma_ast_serde",
"common_concurrent",
"bundler",
"ecma_loader",
Expand Down
1 change: 1 addition & 0 deletions bindings/binding_core_wasm/Cargo.toml
Expand Up @@ -24,6 +24,7 @@ anyhow = "1.0.66"
serde = { version = "1", features = ["derive"] }
serde-wasm-bindgen = "0.4.5"
swc_core = { version = "0.69.20", features = [
"ecma_ast_serde",
"common_perf",
"binding_macro_wasm",
"ecma_transforms",
Expand Down
1 change: 1 addition & 0 deletions crates/ast_node/src/enum_deserialize.rs
Expand Up @@ -411,6 +411,7 @@ pub fn expand(
variants
},
{
#[cfg(feature = "serde-impl")]
impl<'de> serde::Deserialize<'de> for Enum {
#[allow(unreachable_code)]
fn deserialize<__D>(
Expand Down
34 changes: 27 additions & 7 deletions crates/ast_node/src/lib.rs
Expand Up @@ -189,12 +189,17 @@ pub fn ast_node(

item.quote_with(smart_quote!(Vars { input, clone }, {
#[allow(clippy::derive_partial_eq_without_eq)]
#[cfg_attr(
feature = "serde-impl",
derive(
::serde::Serialize,
)
)]
#[derive(
::swc_common::FromVariant,
::swc_common::Spanned,
Debug,
PartialEq,
::serde::Serialize,
::swc_common::DeserializeEnum,
)]
clone
Expand All @@ -220,7 +225,10 @@ pub fn ast_node(
deserialize = "__D: rkyv_latest::de::SharedDeserializeRegistry"
))
)]
#[serde(untagged)]
#[cfg_attr(
feature = "serde-impl",
serde(untagged)
)]
input
}))
}
Expand All @@ -238,7 +246,10 @@ pub fn ast_node(
}) => {
if args.is_some() {
Some(Quote::new_call_site().quote_with(smart_quote!(Vars {}, {
#[serde(tag = "type")]
#[cfg_attr(
feature = "serde-impl",
serde(tag = "type")
)]
})))
} else {
None
Expand All @@ -248,8 +259,11 @@ pub fn ast_node(
};

let serde_rename = args.as_ref().map(|args| {
Quote::new_call_site().quote_with(smart_quote!(Vars { name: &args.ty },{
#[serde(rename = name)]
Quote::new_call_site().quote_with(smart_quote!(Vars { name: &args.ty }, {
#[cfg_attr(
feature = "serde-impl",
serde(rename = name)
)]
}))
});

Expand All @@ -261,7 +275,10 @@ pub fn ast_node(
item.quote_with(smart_quote!(Vars { input, serde_tag, serde_rename }, {
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(::swc_common::Spanned, Clone, Debug, PartialEq)]
#[derive(::serde::Serialize, ::serde::Deserialize)]
#[cfg_attr(
feature = "serde-impl",
derive(::serde::Serialize, ::serde::Deserialize)
)]
#[cfg_attr(
feature = "rkyv-impl",
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
Expand Down Expand Up @@ -289,7 +306,10 @@ pub fn ast_node(
)
)]
serde_tag
#[serde(rename_all = "camelCase")]
#[cfg_attr(
feature = "serde-impl",
serde(rename_all = "camelCase")
)]
serde_rename
input
}));
Expand Down
8 changes: 6 additions & 2 deletions crates/jsdoc/Cargo.toml
Expand Up @@ -11,9 +11,13 @@ version = "0.99.10"
[lib]
bench = false

[features]
serde-impl = ["serde"]

[dependencies]
nom = "7.1.0"
serde = { version = "1", features = ["derive"] }
nom = "7.1.0"
serde = { version = "1", features = ["derive"], optional = true }

swc_atoms = { version = "0.4.39", path = "../swc_atoms" }
swc_common = { version = "0.29.39", path = "../swc_common" }

Expand Down
10 changes: 5 additions & 5 deletions crates/jsdoc/src/ast.rs
Expand Up @@ -21,9 +21,9 @@ pub struct JsDoc {
#[ast_node]
pub struct TagItem {
pub span: Span,
#[serde(rename = "tagName")]
#[cfg_attr(feature = "serde-impl", serde(rename = "tagName"))]
pub tag_name: Text,
#[serde(flatten)]
#[cfg_attr(feature = "serde-impl", serde(flatten))]
pub tag: Tag,
}

Expand Down Expand Up @@ -304,7 +304,7 @@ pub struct ParameterTag {
pub span: Span,

pub name: Option<Text>,
#[serde(rename = "typeExpression")]
#[cfg_attr(feature = "serde-impl", serde(rename = "typeExpression"))]
pub ty: Option<Text>,

pub desc: Text,
Expand Down Expand Up @@ -345,11 +345,11 @@ pub struct TemplateTag {
#[ast_node]
pub struct TypedefTag {
pub span: Span,
#[serde(rename = "full_name")]
#[cfg_attr(feature = "serde-impl", serde(rename = "full_name"))]
pub full_name: Option<NamespaceBody>,

pub name: Option<Text>,
#[serde(rename = "typeExpression")]
#[cfg_attr(feature = "serde-impl", serde(rename = "typeExpression"))]
pub type_expr: Option<TypeExprOrTypeLit>,
}

Expand Down
6 changes: 4 additions & 2 deletions crates/string_enum/src/lib.rs
Expand Up @@ -28,8 +28,8 @@ use syn::{self, *};
///# Output
///
/// - `pub fn as_str(&self) -> &'static str`
/// - `impl serde::Serialize`
/// - `impl serde::Deserialize`
/// - `impl serde::Serialize` with `cfg(feature = "serde")`
/// - `impl serde::Deserialize` with `cfg(feature = "serde")`
/// - `impl FromStr`
/// - `impl Debug`
/// - `impl Display`
Expand Down Expand Up @@ -332,6 +332,7 @@ fn make_as_str_ident() -> Ident {
fn make_serialize(i: &DeriveInput) -> ItemImpl {
Quote::new_call_site()
.quote_with(smart_quote!(Vars { Type: &i.ident }, {
#[cfg(feature = "serde")]
impl ::serde::Serialize for Type {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
Expand All @@ -348,6 +349,7 @@ fn make_serialize(i: &DeriveInput) -> ItemImpl {
fn make_deserialize(i: &DeriveInput) -> ItemImpl {
Quote::new_call_site()
.quote_with(smart_quote!(Vars { Type: &i.ident }, {
#[cfg(feature = "serde")]
impl<'de> ::serde::Deserialize<'de> for Type {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
Expand Down
3 changes: 3 additions & 0 deletions crates/swc/Cargo.toml
Expand Up @@ -122,6 +122,9 @@ swc_visit = { version = "0.5.5", path = "../swc_visit" }
ansi_term = "0.12"
criterion = "0.3"
rayon = "1.5.1"
swc_ecma_ast = { version = "0.100.5", path = "../swc_ecma_ast", features = [
"serde-impl",
] }
swc_ecma_lints = { version = "0.77.16", path = "../swc_ecma_lints", features = [
"non_critical_lints",
] }
Expand Down
4 changes: 4 additions & 0 deletions crates/swc_common/benches/serde.rs
@@ -1,3 +1,5 @@
#![cfg_attr(not(feature = "serde-impl"), allow(unused))]

use ast_node::ast_node;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use serde::{Deserialize, Serialize};
Expand Down Expand Up @@ -64,6 +66,7 @@ fn bench_serde(c: &mut Criterion) {
}

fn bench_ast_node(c: &mut Criterion) {
#[cfg(feature = "serde-impl")]
c.bench_function("serialization of ast node", |b| {
let src = AstNode::String(Str {
span: DUMMY_SP,
Expand All @@ -72,6 +75,7 @@ fn bench_ast_node(c: &mut Criterion) {

b.iter(|| black_box(serde_json::to_string(&src).unwrap()));
});
#[cfg(feature = "serde-impl")]
c.bench_function("deserialization of ast node", |b| {
let src = serde_json::to_string(&AstNode::String(Str {
span: DUMMY_SP,
Expand Down
3 changes: 1 addition & 2 deletions crates/swc_common/src/lib.rs
Expand Up @@ -38,7 +38,6 @@ use std::fmt::Debug;

pub use ast_node::{ast_node, ast_serde, DeserializeEnum, Spanned};
pub use from_variant::FromVariant;
use serde::Serialize;
pub use swc_eq_ignore_macros::{EqIgnoreSpan, TypeEq};
pub use swc_visit::chain;

Expand All @@ -57,7 +56,7 @@ pub use self::{
pub mod private;

/// A trait for ast nodes.
pub trait AstNode: Debug + PartialEq + Clone + Spanned + Serialize {
pub trait AstNode: Debug + PartialEq + Clone + Spanned {
const TYPE: &'static str;
}

Expand Down
2 changes: 1 addition & 1 deletion crates/swc_common/tests/issue_3159.rs
@@ -1,7 +1,7 @@
use swc_common::ast_serde;

#[ast_serde]
enum Message {
pub enum Message {
#[tag("Request")]
Request(String),
#[tag("Response")]
Expand Down
4 changes: 3 additions & 1 deletion crates/swc_core/Cargo.toml
Expand Up @@ -128,7 +128,8 @@ testing_transform = ["__ecma", "__testing_transform"]

# Enable swc_ecma_ast / swc_atoms support.
# TODO: currently both are enabled at once, we may want to separate them.
ecma_ast = ["__ecma", "swc_ecma_ast", "swc_atoms"]
ecma_ast = ["__ecma", "swc_ecma_ast", "swc_atoms"]
ecma_ast_serde = ["ecma_ast", "swc_ecma_ast/serde-impl"]

# Enable swc_ecma_parser support.
ecma_parser = ["__parser"]
Expand All @@ -151,6 +152,7 @@ ecma_usage_analyzer = ["__ecma", "swc_ecma_usage_analyzer"]

# Enable swc_css
css_ast = ["__css", "swc_css_ast"]
css_ast_serde = ["css_ast", "swc_css_ast/serde-impl"]
css_codegen = ["__css", "swc_css_codegen"]
css_compat = ["__css", "swc_css_compat"]
css_minifier = ["__css", "swc_css_minifier"]
Expand Down
1 change: 1 addition & 0 deletions crates/swc_core/tests/fixture/stub_wasm/Cargo.toml
Expand Up @@ -20,6 +20,7 @@ serde = { version = "1", features = ["derive"] }
serde-wasm-bindgen = "0.4.5"
swc_core = { path = "../../../../swc_core", features = [
"common_perf",
"ecma_ast_serde",
"binding_macro_wasm",
"ecma_transforms",
"ecma_visit",
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_css_ast/Cargo.toml
Expand Up @@ -16,13 +16,13 @@ __rkyv = []
default = []
rkyv-bytecheck-impl = []
rkyv-impl = ["__rkyv", "rkyv", "swc_atoms/rkyv-impl", "swc_common/rkyv-impl"]

serde-impl = ["serde"]

[dependencies]
bytecheck = { version = "0.6.9", optional = true }
is-macro = "0.2.0"
rkyv = { version = "=0.7.37", optional = true }
serde = { version = "1.0.127", features = ["derive"] }
serde = { version = "1.0.127", features = ["derive"], optional = true }

string_enum = { version = "0.3.4", path = "../string_enum/" }
swc_atoms = { version = "0.4.39", path = "../swc_atoms" }
Expand Down
8 changes: 4 additions & 4 deletions crates/swc_css_ast/src/at_rule.rs
Expand Up @@ -475,10 +475,10 @@ pub struct MediaFeatureRange {
pub struct MediaFeatureRangeInterval {
pub span: Span,
pub left: Box<MediaFeatureValue>,
#[serde(rename = "leftComparison")]
#[cfg_attr(feature = "serde-impl", serde(rename = "leftComparison"))]
pub left_comparison: MediaFeatureRangeComparison,
pub name: MediaFeatureName,
#[serde(rename = "rightComparison")]
#[cfg_attr(feature = "serde-impl", serde(rename = "rightComparison"))]
pub right_comparison: MediaFeatureRangeComparison,
pub right: Box<MediaFeatureValue>,
}
Expand Down Expand Up @@ -803,10 +803,10 @@ pub struct SizeFeatureRange {
pub struct SizeFeatureRangeInterval {
pub span: Span,
pub left: Box<SizeFeatureValue>,
#[serde(rename = "leftComparison")]
#[cfg_attr(feature = "serde-impl", serde(rename = "leftComparison"))]
pub left_comparison: SizeFeatureRangeComparison,
pub name: SizeFeatureName,
#[serde(rename = "rightComparison")]
#[cfg_attr(feature = "serde-impl", serde(rename = "rightComparison"))]
pub right_comparison: SizeFeatureRangeComparison,
pub right: Box<SizeFeatureValue>,
}
Expand Down
19 changes: 12 additions & 7 deletions crates/swc_css_ast/src/token.rs
Expand Up @@ -4,6 +4,7 @@ use std::{
};

use is_macro::Is;
#[cfg(feature = "serde-impl")]
use serde::{Deserialize, Serialize};
use swc_atoms::{Atom, JsWord};
use swc_common::{ast_node, util::take::Take, EqIgnoreSpan, Span};
Expand All @@ -24,7 +25,7 @@ impl Take for TokenAndSpan {
}
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, Is, EqIgnoreSpan)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Is, EqIgnoreSpan)]
#[cfg_attr(
feature = "rkyv",
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
Expand All @@ -37,29 +38,32 @@ impl Take for TokenAndSpan {
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
))
)]
#[cfg_attr(feature = "serde-impl", derive(Serialize, Deserialize))]
pub enum NumberType {
#[serde(rename = "integer")]
#[cfg_attr(feature = "serde-impl", serde(rename = "integer"))]
Integer,
#[serde(rename = "number")]
#[cfg_attr(feature = "serde-impl", serde(rename = "number"))]
Number,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, EqIgnoreSpan)]
#[derive(Debug, Clone, PartialEq, EqIgnoreSpan)]
#[cfg_attr(
feature = "rkyv",
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
)]
#[cfg_attr(feature = "serde-impl", derive(Serialize, Deserialize))]
pub struct DimensionToken {
pub value: f64,
pub raw_value: Atom,
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
pub unit: JsWord,
#[serde(rename = "type")]

#[cfg_attr(feature = "serde-impl", serde(rename = "type"))]
pub type_flag: NumberType,
pub raw_unit: Atom,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, EqIgnoreSpan)]
#[derive(Debug, Clone, PartialEq, EqIgnoreSpan)]
#[cfg_attr(
feature = "rkyv",
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
Expand All @@ -72,6 +76,7 @@ pub struct DimensionToken {
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
))
)]
#[cfg_attr(feature = "serde-impl", derive(serde::Serialize, serde::Deserialize))]
pub enum Token {
Ident {
#[cfg_attr(feature = "rkyv", with(swc_atoms::EncodeJsWord))]
Expand Down Expand Up @@ -120,7 +125,7 @@ pub enum Token {
Number {
value: f64,
raw: Atom,
#[serde(rename = "type")]
#[cfg_attr(feature = "serde-impl", serde(rename = "type"))]
type_flag: NumberType,
},
Percentage {
Expand Down
5 changes: 4 additions & 1 deletion crates/swc_css_parser/Cargo.toml
Expand Up @@ -28,9 +28,12 @@ swc_css_ast = { version = "0.134.13", path = "../swc_css_ast" }
criterion = "0.3"
serde_json = "1.0.66"

swc_css_ast = { version = "0.134.13", path = "../swc_css_ast", features = [
"serde-impl",
] }
swc_css_visit = { version = "0.133.13", path = "../swc_css_visit" }
swc_node_base = { version = "0.5.8", path = "../swc_node_base" }
testing = { version = "0.31.42", path = "../testing" }
testing = { version = "0.31.42", path = "../testing" }

[[bench]]
harness = false
Expand Down

1 comment on commit 30bc086

@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: 30bc086 Previous: 2826198 Ratio
es/full/bugs-1 305903 ns/iter (± 21523) 304200 ns/iter (± 9148) 1.01
es/full/minify/libraries/antd 1528918401 ns/iter (± 36160987) 1634066552 ns/iter (± 22063847) 0.94
es/full/minify/libraries/d3 287228938 ns/iter (± 3851223) 298405635 ns/iter (± 5386496) 0.96
es/full/minify/libraries/echarts 1176550040 ns/iter (± 13162460) 1252438382 ns/iter (± 15073877) 0.94
es/full/minify/libraries/jquery 90330293 ns/iter (± 722921) 91663995 ns/iter (± 657276) 0.99
es/full/minify/libraries/lodash 103267600 ns/iter (± 1075329) 105943922 ns/iter (± 1256500) 0.97
es/full/minify/libraries/moment 52076444 ns/iter (± 652967) 52690481 ns/iter (± 287685) 0.99
es/full/minify/libraries/react 18905198 ns/iter (± 361171) 19205511 ns/iter (± 183252) 0.98
es/full/minify/libraries/terser 239404172 ns/iter (± 2752710) 256342568 ns/iter (± 3241292) 0.93
es/full/minify/libraries/three 429780763 ns/iter (± 10558942) 457880585 ns/iter (± 8645915) 0.94
es/full/minify/libraries/typescript 2901672423 ns/iter (± 31769057) 3138794597 ns/iter (± 26225494) 0.92
es/full/minify/libraries/victory 657328060 ns/iter (± 20642957) 689434779 ns/iter (± 11226772) 0.95
es/full/minify/libraries/vue 129048463 ns/iter (± 833598) 130647460 ns/iter (± 729292) 0.99
es/full/codegen/es3 28109 ns/iter (± 98) 28539 ns/iter (± 75) 0.98
es/full/codegen/es5 28338 ns/iter (± 67) 28455 ns/iter (± 61) 1.00
es/full/codegen/es2015 28264 ns/iter (± 78) 28502 ns/iter (± 46) 0.99
es/full/codegen/es2016 28338 ns/iter (± 115) 28482 ns/iter (± 105) 0.99
es/full/codegen/es2017 28100 ns/iter (± 136) 28533 ns/iter (± 105) 0.98
es/full/codegen/es2018 28335 ns/iter (± 78) 28457 ns/iter (± 63) 1.00
es/full/codegen/es2019 28162 ns/iter (± 60) 28554 ns/iter (± 48) 0.99
es/full/codegen/es2020 28174 ns/iter (± 133) 28531 ns/iter (± 76) 0.99
es/full/all/es3 181878803 ns/iter (± 1943731) 182117659 ns/iter (± 2439589) 1.00
es/full/all/es5 173349455 ns/iter (± 3318618) 171873576 ns/iter (± 3330936) 1.01
es/full/all/es2015 137421294 ns/iter (± 1974443) 136586796 ns/iter (± 1259588) 1.01
es/full/all/es2016 133974723 ns/iter (± 1834212) 134141122 ns/iter (± 1475974) 1.00
es/full/all/es2017 131936492 ns/iter (± 1887702) 131262310 ns/iter (± 2413577) 1.01
es/full/all/es2018 129296020 ns/iter (± 1256137) 125807750 ns/iter (± 1987705) 1.03
es/full/all/es2019 126189479 ns/iter (± 1749530) 125818379 ns/iter (± 1997250) 1.00
es/full/all/es2020 119289692 ns/iter (± 1460856) 118401960 ns/iter (± 1279817) 1.01
es/full/parser 539371 ns/iter (± 8279) 529513 ns/iter (± 8878) 1.02
es/full/base/fixer 22301 ns/iter (± 133) 22737 ns/iter (± 31) 0.98
es/full/base/resolver_and_hygiene 81921 ns/iter (± 251) 83420 ns/iter (± 140) 0.98
serialization of serde 129 ns/iter (± 0) 126 ns/iter (± 0) 1.02
css/minify/libraries/bootstrap 27780754 ns/iter (± 193802) 28390274 ns/iter (± 99423) 0.98
css/visitor/compare/clone 2078416 ns/iter (± 11432) 2101377 ns/iter (± 12168) 0.99
css/visitor/compare/visit_mut_span 2278458 ns/iter (± 13133) 2285156 ns/iter (± 6717) 1.00
css/visitor/compare/visit_mut_span_panic 2329901 ns/iter (± 8112) 2321386 ns/iter (± 15695) 1.00
css/visitor/compare/fold_span 3023402 ns/iter (± 21860) 3086186 ns/iter (± 22364) 0.98
css/visitor/compare/fold_span_panic 3168762 ns/iter (± 20455) 3205489 ns/iter (± 19150) 0.99
css/lexer/bootstrap_5_1_3 5143572 ns/iter (± 17819) 5149965 ns/iter (± 9745) 1.00
css/lexer/foundation_6_7_4 4359650 ns/iter (± 3159) 4333386 ns/iter (± 6514) 1.01
css/lexer/tailwind_3_1_1 825236 ns/iter (± 2174) 823315 ns/iter (± 1470) 1.00
css/parser/bootstrap_5_1_3 21776457 ns/iter (± 110714) 22006153 ns/iter (± 385797) 0.99
css/parser/foundation_6_7_4 17286831 ns/iter (± 87999) 17449682 ns/iter (± 97120) 0.99
css/parser/tailwind_3_1_1 3319674 ns/iter (± 13272) 3350319 ns/iter (± 3699) 0.99
es/codegen/colors 327158 ns/iter (± 184128) 321874 ns/iter (± 180803) 1.02
es/codegen/large 1190313 ns/iter (± 606488) 1227581 ns/iter (± 643172) 0.97
es/codegen/with-parser/colors 47212 ns/iter (± 232) 47733 ns/iter (± 425) 0.99
es/codegen/with-parser/large 509159 ns/iter (± 2401) 522022 ns/iter (± 1888) 0.98
es/minify/libraries/antd 1294768983 ns/iter (± 25594004) 1413999203 ns/iter (± 15417161) 0.92
es/minify/libraries/d3 253119026 ns/iter (± 5057926) 254868407 ns/iter (± 7100956) 0.99
es/minify/libraries/echarts 1026189265 ns/iter (± 13239209) 1100870834 ns/iter (± 22896823) 0.93
es/minify/libraries/jquery 77128521 ns/iter (± 800815) 78753670 ns/iter (± 700975) 0.98
es/minify/libraries/lodash 93199680 ns/iter (± 1273319) 94934961 ns/iter (± 793426) 0.98
es/minify/libraries/moment 44906431 ns/iter (± 334164) 45683585 ns/iter (± 272052) 0.98
es/minify/libraries/react 16806734 ns/iter (± 120978) 16962962 ns/iter (± 123665) 0.99
es/minify/libraries/terser 206590737 ns/iter (± 3010563) 207480217 ns/iter (± 4049210) 1.00
es/minify/libraries/three 344232579 ns/iter (± 5936337) 372456360 ns/iter (± 7529088) 0.92
es/minify/libraries/typescript 2456817366 ns/iter (± 25363784) 2612572808 ns/iter (± 14829932) 0.94
es/minify/libraries/victory 537732373 ns/iter (± 10264114) 568904878 ns/iter (± 11314869) 0.95
es/minify/libraries/vue 114367531 ns/iter (± 863601) 115093384 ns/iter (± 1019643) 0.99
es/visitor/compare/clone 2307148 ns/iter (± 9924) 2328556 ns/iter (± 20412) 0.99
es/visitor/compare/visit_mut_span 2664226 ns/iter (± 8596) 2677436 ns/iter (± 7707) 1.00
es/visitor/compare/visit_mut_span_panic 2719260 ns/iter (± 9469) 2729724 ns/iter (± 6248) 1.00
es/visitor/compare/fold_span 3759962 ns/iter (± 11334) 3771655 ns/iter (± 9143) 1.00
es/visitor/compare/fold_span_panic 3893759 ns/iter (± 11270) 3945884 ns/iter (± 8719) 0.99
es/lexer/colors 15637 ns/iter (± 13) 15391 ns/iter (± 33) 1.02
es/lexer/angular 7554891 ns/iter (± 21831) 7540079 ns/iter (± 10133) 1.00
es/lexer/backbone 972242 ns/iter (± 3821) 970449 ns/iter (± 470) 1.00
es/lexer/jquery 5434367 ns/iter (± 10370) 5439971 ns/iter (± 7133) 1.00
es/lexer/jquery mobile 8381299 ns/iter (± 26413) 8391003 ns/iter (± 9402) 1.00
es/lexer/mootools 4285073 ns/iter (± 17121) 4292134 ns/iter (± 4789) 1.00
es/lexer/underscore 812077 ns/iter (± 3961) 816797 ns/iter (± 950) 0.99
es/lexer/three 25588807 ns/iter (± 119342) 25546778 ns/iter (± 29799) 1.00
es/lexer/yui 4600561 ns/iter (± 20117) 4610933 ns/iter (± 4665) 1.00
es/parser/colors 28989 ns/iter (± 135) 29331 ns/iter (± 87) 0.99
es/parser/angular 14941520 ns/iter (± 104816) 15260198 ns/iter (± 177155) 0.98
es/parser/backbone 2164368 ns/iter (± 6606) 2205277 ns/iter (± 13135) 0.98
es/parser/jquery 11711612 ns/iter (± 121451) 12094739 ns/iter (± 94569) 0.97
es/parser/jquery mobile 18648979 ns/iter (± 190048) 18893191 ns/iter (± 202858) 0.99
es/parser/mootools 9024802 ns/iter (± 22477) 9095623 ns/iter (± 27759) 0.99
es/parser/underscore 1833200 ns/iter (± 15068) 1864602 ns/iter (± 11219) 0.98
es/parser/three 52786159 ns/iter (± 1153989) 55387808 ns/iter (± 556714) 0.95
es/parser/yui 9033236 ns/iter (± 57080) 9182343 ns/iter (± 74208) 0.98
es/preset-env/usage/builtin_type 137266 ns/iter (± 31645) 144301 ns/iter (± 35736) 0.95
es/preset-env/usage/property 20752 ns/iter (± 141) 21035 ns/iter (± 100) 0.99
es/resolver/typescript 113296845 ns/iter (± 2309434) 120093587 ns/iter (± 1966245) 0.94
es/fixer/typescript 81689619 ns/iter (± 748002) 85210753 ns/iter (± 2160141) 0.96
es/hygiene/typescript 169559040 ns/iter (± 1326461) 182139503 ns/iter (± 1250565) 0.93
es/resolver_with_hygiene/typescript 316460573 ns/iter (± 2238031) 329743325 ns/iter (± 1620590) 0.96
es/visitor/base-perf/module_clone 78550 ns/iter (± 1315) 80678 ns/iter (± 1121) 0.97
es/visitor/base-perf/fold_empty 89274 ns/iter (± 711) 90097 ns/iter (± 1365) 0.99
es/visitor/base-perf/fold_noop_impl_all 90148 ns/iter (± 1359) 90967 ns/iter (± 2382) 0.99
es/visitor/base-perf/fold_noop_impl_vec 89863 ns/iter (± 841) 91452 ns/iter (± 1287) 0.98
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 58 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_unboxed_clone 54 ns/iter (± 0) 54 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 102 ns/iter (± 0) 101 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 98 ns/iter (± 0) 98 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 3516 ns/iter (± 68) 3524 ns/iter (± 54) 1.00
es/base/parallel/resolver/typescript 6827499013 ns/iter (± 209989856) 6799579630 ns/iter (± 323030409) 1.00
es/base/parallel/hygiene/typescript 1992628614 ns/iter (± 33996938) 2181687079 ns/iter (± 14922033) 0.91
misc/visitors/time-complexity/time 5 101 ns/iter (± 0) 105 ns/iter (± 0) 0.96
misc/visitors/time-complexity/time 10 349 ns/iter (± 3) 371 ns/iter (± 0) 0.94
misc/visitors/time-complexity/time 15 676 ns/iter (± 1) 705 ns/iter (± 1) 0.96
misc/visitors/time-complexity/time 20 1262 ns/iter (± 6) 1333 ns/iter (± 7) 0.95
misc/visitors/time-complexity/time 40 6745 ns/iter (± 34) 6891 ns/iter (± 38) 0.98
misc/visitors/time-complexity/time 60 17239 ns/iter (± 75) 17496 ns/iter (± 12) 0.99
es/full-target/es2016 247667 ns/iter (± 972) 250305 ns/iter (± 486) 0.99
es/full-target/es2017 240779 ns/iter (± 970) 243186 ns/iter (± 345) 0.99
es/full-target/es2018 229596 ns/iter (± 447) 231983 ns/iter (± 202) 0.99
es2020_nullish_coalescing 91525 ns/iter (± 603) 91471 ns/iter (± 551) 1.00
es2020_optional_chaining 124428 ns/iter (± 579) 124613 ns/iter (± 528) 1.00
es2022_class_properties 145532 ns/iter (± 395) 146948 ns/iter (± 246) 0.99
es2018_object_rest_spread 94630 ns/iter (± 337) 94982 ns/iter (± 310) 1.00
es2019_optional_catch_binding 83712 ns/iter (± 322) 84353 ns/iter (± 174) 0.99
es2017_async_to_generator 84657 ns/iter (± 150) 85001 ns/iter (± 265) 1.00
es2016_exponentiation 88175 ns/iter (± 495) 88975 ns/iter (± 156) 0.99
es2015_arrow 92203 ns/iter (± 379) 91186 ns/iter (± 192) 1.01
es2015_block_scoped_fn 90382 ns/iter (± 385) 89017 ns/iter (± 151) 1.02
es2015_block_scoping 168235 ns/iter (± 614) 166597 ns/iter (± 219) 1.01

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

Please sign in to comment.