Skip to content

Commit

Permalink
refactor(es/parser): Make lexer not generic over Input (#6993)
Browse files Browse the repository at this point in the history
**Description:**

Currently, it uses `StringInput` as the input type, but I'll refactor it to use `String` or `Vec<u8>` directly to optimize it further.

**Related issue:**

 - #6991
  • Loading branch information
kdy1 committed Feb 28, 2023
1 parent bbb3615 commit 367ac82
Show file tree
Hide file tree
Showing 22 changed files with 50 additions and 51 deletions.
3 changes: 1 addition & 2 deletions crates/swc/tests/serde.rs
@@ -1,13 +1,12 @@
use std::path::Path;

use swc_common::input::StringInput;
use swc_ecma_ast::Module;
use swc_ecma_parser::{lexer::Lexer, PResult, Parser, Syntax};
use testing::NormalizedOutput;

fn with_parser<F, Ret>(file_name: &str, f: F) -> Result<Ret, NormalizedOutput>
where
F: FnOnce(&mut Parser<Lexer<StringInput>>) -> PResult<Ret>,
F: FnOnce(&mut Parser<Lexer>) -> PResult<Ret>,
{
::testing::run_test(false, |cm, handler| {
let fm = cm
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_codegen/tests/sourcemap.rs
Expand Up @@ -7,7 +7,7 @@ use sourcemap::SourceMap;
use swc_common::{comments::SingleThreadedComments, source_map::SourceMapGenConfig};
use swc_ecma_ast::EsVersion;
use swc_ecma_codegen::{self, text_writer::WriteJs, Emitter};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax};
use swc_ecma_parser::{lexer::Lexer, Parser, Syntax};
use swc_ecma_testing::{exec_node_js, JsExecOptions};

static IGNORED_PASS_TESTS: &[&str] = &[
Expand Down Expand Up @@ -306,7 +306,7 @@ fn identity(entry: PathBuf) {
(&*fm).into(),
Some(&comments),
);
let mut parser: Parser<Lexer<StringInput>> = Parser::new_from(lexer);
let mut parser: Parser<Lexer> = Parser::new_from(lexer);
let mut src_map = vec![];

{
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_codegen/tests/test262.rs
Expand Up @@ -9,7 +9,7 @@ use std::{
use swc_common::comments::SingleThreadedComments;
use swc_ecma_ast::EsVersion;
use swc_ecma_codegen::{self, text_writer::WriteJs, Emitter};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax};
use swc_ecma_parser::{lexer::Lexer, Parser, Syntax};
use testing::NormalizedOutput;

const IGNORED_PASS_TESTS: &[&str] = &[
Expand Down Expand Up @@ -121,7 +121,7 @@ fn do_test(entry: &Path, minify: bool) {
(&*src).into(),
Some(&comments),
);
let mut parser: Parser<Lexer<StringInput>> = Parser::new_from(lexer);
let mut parser: Parser<Lexer> = Parser::new_from(lexer);

{
let mut wr = Box::new(swc_ecma_codegen::text_writer::JsWriter::new(
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_dep_graph/src/lib.rs
Expand Up @@ -380,7 +380,7 @@ mod tests {
comments::{Comment, CommentKind, SingleThreadedComments},
BytePos, FileName, Span, SyntaxContext,
};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax, TsConfig};
use swc_ecma_parser::{lexer::Lexer, Parser, Syntax, TsConfig};

use super::*;

Expand All @@ -393,7 +393,7 @@ mod tests {
cm.new_source_file(FileName::Custom(file_name.to_string()), source.to_string());

let comments = SingleThreadedComments::default();
let lexer: Lexer<StringInput<'_>> = Lexer::new(
let lexer: Lexer = Lexer::new(
Syntax::Typescript(TsConfig {
dts: file_name.ends_with(".d.ts"),
tsx: file_name.contains("tsx"),
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_parser/src/lexer/jsx.rs
Expand Up @@ -3,7 +3,7 @@ use swc_atoms::Atom;

use super::*;

impl<'a, I: Input> Lexer<'a, I> {
impl<'a> Lexer<'a> {
pub(super) fn read_jsx_token(&mut self) -> LexResult<Option<Token>> {
debug_assert!(self.syntax.jsx());

Expand Down
16 changes: 8 additions & 8 deletions crates/swc_ecma_parser/src/lexer/mod.rs
Expand Up @@ -5,7 +5,7 @@ use std::{cell::RefCell, char, iter::FusedIterator, rc::Rc};
use either::Either::{Left, Right};
use smallvec::{smallvec, SmallVec};
use swc_atoms::{Atom, AtomGenerator};
use swc_common::{comments::Comments, BytePos, Span};
use swc_common::{comments::Comments, input::StringInput, BytePos, Span};
use swc_ecma_ast::{op, EsVersion};

use self::{comments_buffer::CommentsBuffer, state::State, util::*};
Expand Down Expand Up @@ -98,13 +98,13 @@ impl Iterator for CharIter {
impl FusedIterator for CharIter {}

#[derive(Clone)]
pub struct Lexer<'a, I: Input> {
pub struct Lexer<'a> {
comments: Option<&'a dyn Comments>,
/// [Some] if comment comment parsing is enabled. Otherwise [None]
comments_buffer: Option<CommentsBuffer>,

pub(crate) ctx: Context,
input: I,
input: StringInput<'a>,
start_pos: BytePos,

state: State,
Expand All @@ -119,13 +119,13 @@ pub struct Lexer<'a, I: Input> {
buf: Rc<RefCell<String>>,
}

impl<I: Input> FusedIterator for Lexer<'_, I> {}
impl FusedIterator for Lexer<'_> {}

impl<'a, I: Input> Lexer<'a, I> {
impl<'a> Lexer<'a> {
pub fn new(
syntax: Syntax,
target: EsVersion,
input: I,
input: StringInput<'a>,
comments: Option<&'a dyn Comments>,
) -> Self {
let start_pos = input.last_pos();
Expand All @@ -149,7 +149,7 @@ impl<'a, I: Input> Lexer<'a, I> {
/// Utility method to reuse buffer.
fn with_buf<F, Ret>(&mut self, op: F) -> LexResult<Ret>
where
F: for<'any> FnOnce(&mut Lexer<'any, I>, &mut String) -> LexResult<Ret>,
F: for<'any> FnOnce(&mut Lexer<'any>, &mut String) -> LexResult<Ret>,
{
let b = self.buf.clone();
let mut buf = b.borrow_mut();
Expand Down Expand Up @@ -691,7 +691,7 @@ impl<'a, I: Input> Lexer<'a, I> {
}
}

impl<'a, I: Input> Lexer<'a, I> {
impl<'a> Lexer<'a> {
#[inline(never)]
fn read_slash(&mut self) -> LexResult<Option<Token>> {
debug_assert_eq!(self.cur(), Some('/'));
Expand Down
6 changes: 3 additions & 3 deletions crates/swc_ecma_parser/src/lexer/number.rs
Expand Up @@ -28,7 +28,7 @@ impl<const RADIX: u8> LazyBigInt<RADIX> {
}
}

impl<'a, I: Input> Lexer<'a, I> {
impl<'a> Lexer<'a> {
/// Reads an integer, octal integer, or floating-point number
pub(super) fn read_number(
&mut self,
Expand Down Expand Up @@ -531,12 +531,12 @@ impl<'a, I: Input> Lexer<'a, I> {
mod tests {
use std::{f64::INFINITY, panic};

use super::{input::StringInput, *};
use super::*;
use crate::EsConfig;

fn lex<F, Ret>(s: &'static str, f: F) -> Ret
where
F: FnOnce(&mut Lexer<'_, StringInput<'_>>) -> Ret,
F: FnOnce(&mut Lexer<'_>) -> Ret,
{
crate::with_test_sess(s, |_, input| {
let mut l = Lexer::new(
Expand Down
6 changes: 3 additions & 3 deletions crates/swc_ecma_parser/src/lexer/state.rs
Expand Up @@ -120,7 +120,7 @@ impl<'a> From<&'a Token> for TokenType {
}
}

impl<I: Input> Tokens for Lexer<'_, I> {
impl Tokens for Lexer<'_> {
#[inline]
fn set_ctx(&mut self, ctx: Context) {
if ctx.module && !self.module_errors.borrow().is_empty() {
Expand Down Expand Up @@ -192,7 +192,7 @@ impl<I: Input> Tokens for Lexer<'_, I> {
}
}

impl<'a, I: Input> Iterator for Lexer<'a, I> {
impl<'a> Iterator for Lexer<'a> {
type Item = TokenAndSpan;

fn next(&mut self) -> Option<Self::Item> {
Expand Down Expand Up @@ -797,7 +797,7 @@ pub(crate) fn with_lexer<F, Ret>(
f: F,
) -> Result<Ret, ::testing::StdErr>
where
F: FnOnce(&mut Lexer<'_, crate::lexer::input::StringInput<'_>>) -> Result<Ret, ()>,
F: FnOnce(&mut Lexer<'_>) -> Result<Ret, ()>,
{
crate::with_test_sess(s, |_, fm| {
let mut l = Lexer::new(syntax, target, fm, None);
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_parser/src/lexer/util.rs
Expand Up @@ -46,7 +46,7 @@ impl Raw {
// pub const LINE_SEPARATOR: char = '\u{2028}';
// pub const PARAGRAPH_SEPARATOR: char = '\u{2029}';

impl<'a, I: Input> Lexer<'a, I> {
impl<'a> Lexer<'a> {
pub(super) fn span(&self, start: BytePos) -> Span {
let end = self.last_pos();
if cfg!(debug_assertions) && start > end {
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_parser/src/lib.rs
Expand Up @@ -419,7 +419,7 @@ pub fn with_file_parser<T>(
target: EsVersion,
comments: Option<&dyn Comments>,
recovered_errors: &mut Vec<Error>,
op: impl for<'aa> FnOnce(&mut Parser<Lexer<SourceFileInput<'aa>>>) -> PResult<T>,
op: impl for<'aa> FnOnce(&mut Parser<Lexer>) -> PResult<T>,
) -> PResult<T> {
let lexer = Lexer::new(syntax, target, SourceFileInput::from(fm), comments);
let mut p = Parser::new_from(lexer);
Expand Down
12 changes: 6 additions & 6 deletions crates/swc_ecma_parser/src/parser/mod.rs
Expand Up @@ -4,7 +4,7 @@
use std::ops::{Deref, DerefMut};

use swc_atoms::{Atom, JsWord};
use swc_common::{collections::AHashMap, comments::Comments, input::Input, BytePos, Span};
use swc_common::{collections::AHashMap, comments::Comments, input::StringInput, BytePos, Span};
use swc_ecma_ast::*;

pub use self::input::{Capturing, Tokens, TokensInput};
Expand Down Expand Up @@ -58,8 +58,8 @@ struct State {
trailing_commas: AHashMap<BytePos, Span>,
}

impl<'a, I: Input> Parser<Lexer<'a, I>> {
pub fn new(syntax: Syntax, input: I, comments: Option<&'a dyn Comments>) -> Self {
impl<'a> Parser<Lexer<'a>> {
pub fn new(syntax: Syntax, input: StringInput<'a>, comments: Option<&'a dyn Comments>) -> Self {
Self::new_from(Lexer::new(syntax, Default::default(), input, comments))
}
}
Expand Down Expand Up @@ -250,7 +250,7 @@ impl<I: Tokens> Parser<I> {
#[cfg(test)]
pub fn test_parser<F, Ret>(s: &'static str, syntax: Syntax, f: F) -> Ret
where
F: FnOnce(&mut Parser<Lexer<crate::StringInput<'_>>>) -> Result<Ret, Error>,
F: FnOnce(&mut Parser<Lexer>) -> Result<Ret, Error>,
{
crate::with_test_sess(s, |handler, input| {
let lexer = Lexer::new(syntax, EsVersion::Es2019, input, None);
Expand All @@ -277,7 +277,7 @@ where
#[cfg(test)]
pub fn test_parser_comment<F, Ret>(c: &dyn Comments, s: &'static str, syntax: Syntax, f: F) -> Ret
where
F: FnOnce(&mut Parser<Lexer<crate::StringInput<'_>>>) -> Result<Ret, Error>,
F: FnOnce(&mut Parser<Lexer>) -> Result<Ret, Error>,
{
crate::with_test_sess(s, |handler, input| {
let lexer = Lexer::new(syntax, EsVersion::Es2019, input, Some(&c));
Expand All @@ -296,7 +296,7 @@ where
#[cfg(test)]
pub fn bench_parser<F>(b: &mut Bencher, s: &'static str, syntax: Syntax, mut f: F)
where
F: for<'a> FnMut(&'a mut Parser<Lexer<'a, crate::StringInput<'_>>>) -> PResult<()>,
F: for<'a> FnMut(&'a mut Parser<Lexer<'a>>) -> PResult<()>,
{
b.bytes = s.len() as u64;

Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_parser/tests/errors.rs
Expand Up @@ -23,7 +23,7 @@ fn with_parser<F, Ret>(
f: F,
) -> Result<Ret, ()>
where
F: FnOnce(&mut Parser<Lexer<StringInput<'_>>>) -> PResult<Ret>,
F: FnOnce(&mut Parser<Lexer>) -> PResult<Ret>,
{
let fm = cm
.load_file(file_name)
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/tests/js.rs
Expand Up @@ -8,7 +8,7 @@ use std::{

use swc_common::{comments::SingleThreadedComments, FileName};
use swc_ecma_ast::*;
use swc_ecma_parser::{lexer::Lexer, EsConfig, PResult, Parser, StringInput, Syntax};
use swc_ecma_parser::{lexer::Lexer, EsConfig, PResult, Parser, Syntax};
use swc_ecma_visit::FoldWith;
use testing::StdErr;

Expand Down Expand Up @@ -76,7 +76,7 @@ fn with_parser<F, Ret>(
f: F,
) -> Result<Ret, StdErr>
where
F: FnOnce(&mut Parser<Lexer<StringInput<'_>>>, &SingleThreadedComments) -> PResult<Ret>,
F: FnOnce(&mut Parser<Lexer>, &SingleThreadedComments) -> PResult<Ret>,
{
::testing::run_test(treat_error_as_bug, |cm, handler| {
if shift {
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/tests/jsx.rs
Expand Up @@ -6,7 +6,7 @@ use std::{
use pretty_assertions::assert_eq;
use swc_common::{errors::Handler, sync::Lrc, SourceMap};
use swc_ecma_ast::*;
use swc_ecma_parser::{lexer::Lexer, PResult, Parser, StringInput};
use swc_ecma_parser::{lexer::Lexer, PResult, Parser};
use swc_ecma_visit::{Fold, FoldWith};
use testing::{run_test, StdErr};

Expand All @@ -21,7 +21,7 @@ fn with_parser<F, Ret>(
f: F,
) -> Result<Ret, ()>
where
F: FnOnce(&mut Parser<Lexer<StringInput<'_>>>) -> PResult<Ret>,
F: FnOnce(&mut Parser<Lexer>) -> PResult<Ret>,
{
let fm = cm
.load_file(file_name)
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/tests/span.rs
Expand Up @@ -2,7 +2,7 @@ use std::path::PathBuf;

use swc_common::{comments::SingleThreadedComments, errors::Handler, Spanned};
use swc_ecma_ast::*;
use swc_ecma_parser::{lexer::Lexer, EsConfig, Parser, StringInput, Syntax, TsConfig};
use swc_ecma_parser::{lexer::Lexer, EsConfig, Parser, Syntax, TsConfig};
use swc_ecma_visit::{Visit, VisitWith};

#[testing::fixture("tests/span/**/*.js")]
Expand Down Expand Up @@ -39,7 +39,7 @@ fn span(entry: PathBuf) {
(&*src).into(),
Some(&comments),
);
let mut parser: Parser<Lexer<StringInput>> = Parser::new_from(lexer);
let mut parser: Parser<Lexer> = Parser::new_from(lexer);

{
let module = parser
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/tests/test262.rs
Expand Up @@ -11,7 +11,7 @@ use std::{

use common::Normalizer;
use swc_ecma_ast::*;
use swc_ecma_parser::{lexer::Lexer, PResult, Parser, StringInput, Syntax};
use swc_ecma_parser::{lexer::Lexer, PResult, Parser, Syntax};
use swc_ecma_visit::FoldWith;
use test::{
test_main, DynTestFn, Options, ShouldPanic::No, TestDesc, TestDescAndFn, TestName, TestType,
Expand Down Expand Up @@ -320,7 +320,7 @@ fn parse_module(file_name: &Path) -> Result<Module, NormalizedOutput> {

fn with_parser<F, Ret>(file_name: &Path, f: F) -> Result<Ret, StdErr>
where
F: FnOnce(&mut Parser<Lexer<StringInput<'_>>>) -> PResult<Ret>,
F: FnOnce(&mut Parser<Lexer>) -> PResult<Ret>,
{
::testing::run_test(false, |cm, handler| {
let fm = cm
Expand Down
4 changes: 2 additions & 2 deletions crates/swc_ecma_parser/tests/typescript.rs
Expand Up @@ -9,7 +9,7 @@ use std::{
use pretty_assertions::assert_eq;
use swc_common::{comments::SingleThreadedComments, FileName};
use swc_ecma_ast::*;
use swc_ecma_parser::{lexer::Lexer, PResult, Parser, StringInput, Syntax, TsConfig};
use swc_ecma_parser::{lexer::Lexer, PResult, Parser, Syntax, TsConfig};
use swc_ecma_visit::FoldWith;
use testing::StdErr;

Expand Down Expand Up @@ -221,7 +221,7 @@ fn with_parser<F, Ret>(
f: F,
) -> Result<Ret, StdErr>
where
F: FnOnce(&mut Parser<Lexer<StringInput<'_>>>, &SingleThreadedComments) -> PResult<Ret>,
F: FnOnce(&mut Parser<Lexer>, &SingleThreadedComments) -> PResult<Ret>,
{
let fname = file_name.display().to_string();

Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_quote_macros/src/ret_type.rs
Expand Up @@ -50,7 +50,7 @@ pub(crate) fn parse_input_type(input_str: &str, ty: &Type) -> Result<BoxWrapper,

fn parse<T>(
input_str: &str,
op: &mut dyn FnMut(&mut Parser<Lexer<StringInput>>) -> PResult<T>,
op: &mut dyn FnMut(&mut Parser<Lexer>) -> PResult<T>,
) -> Result<BoxWrapper, Error>
where
T: ToCode,
Expand Down
2 changes: 1 addition & 1 deletion crates/swc_ecma_transforms_base/src/tests.rs
Expand Up @@ -49,7 +49,7 @@ impl<'a> Tester<'a> {
op: F,
) -> Result<T, ()>
where
F: FnOnce(&mut Parser<Lexer<StringInput>>) -> Result<T, Error>,
F: FnOnce(&mut Parser<Lexer>) -> Result<T, Error>,
{
let fm = self
.cm
Expand Down
6 changes: 3 additions & 3 deletions crates/swc_ecma_transforms_base/tests/fixer_test262.rs
Expand Up @@ -11,7 +11,7 @@ use std::{

use swc_ecma_ast::*;
use swc_ecma_codegen::{self, Emitter};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax};
use swc_ecma_parser::{lexer::Lexer, Parser, Syntax};
use swc_ecma_transforms_base::fixer::fixer;
use swc_ecma_utils::DropSpan;
use swc_ecma_visit::{Fold, FoldWith, VisitMutWith};
Expand Down Expand Up @@ -165,7 +165,7 @@ fn identity_tests(tests: &mut Vec<TestDescAndFn>) -> Result<(), io::Error> {
let mut wr = Buf(Arc::new(RwLock::new(vec![])));
let mut wr2 = Buf(Arc::new(RwLock::new(vec![])));

let mut parser: Parser<Lexer<StringInput>> =
let mut parser: Parser<Lexer> =
Parser::new(Syntax::default(), (&*src).into(), None);

{
Expand Down Expand Up @@ -197,7 +197,7 @@ fn identity_tests(tests: &mut Vec<TestDescAndFn>) -> Result<(), io::Error> {

// Parse source

let mut e_parser: Parser<Lexer<StringInput>> =
let mut e_parser: Parser<Lexer> =
Parser::new(Syntax::default(), (&*expected).into(), None);

if module {
Expand Down

1 comment on commit 367ac82

@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: 367ac82 Previous: 37533a2 Ratio
es/full/bugs-1 298224 ns/iter (± 13823) 308979 ns/iter (± 10471) 0.97
es/full/minify/libraries/antd 1614476927 ns/iter (± 18572207) 1793269088 ns/iter (± 21641928) 0.90
es/full/minify/libraries/d3 300200417 ns/iter (± 6817488) 334579618 ns/iter (± 12516853) 0.90
es/full/minify/libraries/echarts 1253288226 ns/iter (± 7377629) 1391929807 ns/iter (± 20426417) 0.90
es/full/minify/libraries/jquery 91051207 ns/iter (± 1085148) 95522833 ns/iter (± 1758477) 0.95
es/full/minify/libraries/lodash 106426008 ns/iter (± 1148604) 113377015 ns/iter (± 1762137) 0.94
es/full/minify/libraries/moment 53071139 ns/iter (± 304413) 55041086 ns/iter (± 484478) 0.96
es/full/minify/libraries/react 19162511 ns/iter (± 158230) 20453097 ns/iter (± 401563) 0.94
es/full/minify/libraries/terser 251253952 ns/iter (± 2966960) 275685393 ns/iter (± 9873278) 0.91
es/full/minify/libraries/three 451836044 ns/iter (± 3172770) 500770881 ns/iter (± 13538881) 0.90
es/full/minify/libraries/typescript 3011675855 ns/iter (± 22312759) 3341333920 ns/iter (± 30660653) 0.90
es/full/minify/libraries/victory 663424774 ns/iter (± 14229269) 771166567 ns/iter (± 12882426) 0.86
es/full/minify/libraries/vue 131383450 ns/iter (± 1959866) 138849950 ns/iter (± 2096687) 0.95
es/full/codegen/es3 26916 ns/iter (± 64) 26280 ns/iter (± 39) 1.02
es/full/codegen/es5 26911 ns/iter (± 40) 26366 ns/iter (± 36) 1.02
es/full/codegen/es2015 26942 ns/iter (± 71) 26225 ns/iter (± 66) 1.03
es/full/codegen/es2016 26915 ns/iter (± 94) 26309 ns/iter (± 80) 1.02
es/full/codegen/es2017 26918 ns/iter (± 38) 26276 ns/iter (± 45) 1.02
es/full/codegen/es2018 26921 ns/iter (± 57) 26294 ns/iter (± 59) 1.02
es/full/codegen/es2019 26915 ns/iter (± 65) 26316 ns/iter (± 66) 1.02
es/full/codegen/es2020 27005 ns/iter (± 63) 26265 ns/iter (± 65) 1.03
es/full/all/es3 169762895 ns/iter (± 3276486) 175779824 ns/iter (± 2324275) 0.97
es/full/all/es5 163395806 ns/iter (± 2903938) 167446544 ns/iter (± 2059274) 0.98
es/full/all/es2015 128002980 ns/iter (± 1288514) 130969962 ns/iter (± 1920203) 0.98
es/full/all/es2016 126497639 ns/iter (± 1421077) 128432235 ns/iter (± 1473077) 0.98
es/full/all/es2017 124895847 ns/iter (± 1336284) 127060503 ns/iter (± 2421775) 0.98
es/full/all/es2018 120830528 ns/iter (± 733949) 124131098 ns/iter (± 1574410) 0.97
es/full/all/es2019 120567376 ns/iter (± 1197932) 123167484 ns/iter (± 1296282) 0.98
es/full/all/es2020 116450592 ns/iter (± 524006) 117662908 ns/iter (± 1475738) 0.99
es/full/parser 547318 ns/iter (± 8494) 542954 ns/iter (± 9469) 1.01
es/full/base/fixer 21901 ns/iter (± 55) 21952 ns/iter (± 34) 1.00
es/full/base/resolver_and_hygiene 82231 ns/iter (± 71) 82117 ns/iter (± 54) 1.00
serialization of ast node 124 ns/iter (± 0) 123 ns/iter (± 0) 1.01
serialization of serde 124 ns/iter (± 0) 126 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 28091149 ns/iter (± 158560) 29092611 ns/iter (± 294267) 0.97
css/visitor/compare/clone 2059426 ns/iter (± 21719) 2121038 ns/iter (± 18131) 0.97
css/visitor/compare/visit_mut_span 2282852 ns/iter (± 9745) 2293005 ns/iter (± 12747) 1.00
css/visitor/compare/visit_mut_span_panic 2296967 ns/iter (± 6948) 2376381 ns/iter (± 17183) 0.97
css/visitor/compare/fold_span 3005196 ns/iter (± 28238) 3132228 ns/iter (± 29351) 0.96
css/visitor/compare/fold_span_panic 3199270 ns/iter (± 24759) 3273107 ns/iter (± 35982) 0.98
css/lexer/bootstrap_5_1_3 5199839 ns/iter (± 26308) 5208661 ns/iter (± 6325) 1.00
css/lexer/foundation_6_7_4 4360853 ns/iter (± 1912) 4383311 ns/iter (± 1226) 0.99
css/lexer/tailwind_3_1_1 830239 ns/iter (± 709) 836183 ns/iter (± 841) 0.99
css/parser/bootstrap_5_1_3 21717401 ns/iter (± 54087) 21971143 ns/iter (± 168428) 0.99
css/parser/foundation_6_7_4 17295682 ns/iter (± 21887) 17741091 ns/iter (± 120064) 0.97
css/parser/tailwind_3_1_1 3330439 ns/iter (± 4793) 3321895 ns/iter (± 3796) 1.00
es/codegen/colors 332087 ns/iter (± 184964) 332252 ns/iter (± 185176) 1.00
es/codegen/large 1153899 ns/iter (± 580082) 1199734 ns/iter (± 605831) 0.96
es/codegen/with-parser/colors 47932 ns/iter (± 443) 48481 ns/iter (± 289) 0.99
es/codegen/with-parser/large 519313 ns/iter (± 532) 530103 ns/iter (± 1655) 0.98
es/minify/libraries/antd 1401484345 ns/iter (± 25329611) 1586843834 ns/iter (± 24945559) 0.88
es/minify/libraries/d3 254834719 ns/iter (± 2129703) 287568168 ns/iter (± 6065408) 0.89
es/minify/libraries/echarts 1061805966 ns/iter (± 8379348) 1184333998 ns/iter (± 11851997) 0.90
es/minify/libraries/jquery 77564235 ns/iter (± 554825) 81748273 ns/iter (± 1561123) 0.95
es/minify/libraries/lodash 94358865 ns/iter (± 505585) 100235888 ns/iter (± 990225) 0.94
es/minify/libraries/moment 45919099 ns/iter (± 385150) 47238108 ns/iter (± 331369) 0.97
es/minify/libraries/react 16995100 ns/iter (± 100794) 17675187 ns/iter (± 104728) 0.96
es/minify/libraries/terser 212548890 ns/iter (± 1900364) 238529720 ns/iter (± 5258523) 0.89
es/minify/libraries/three 367804912 ns/iter (± 3776562) 423010923 ns/iter (± 9694654) 0.87
es/minify/libraries/typescript 2556052834 ns/iter (± 23922437) 2846877635 ns/iter (± 21331509) 0.90
es/minify/libraries/victory 563299298 ns/iter (± 5314023) 661486803 ns/iter (± 22140743) 0.85
es/minify/libraries/vue 116679448 ns/iter (± 867080) 122244027 ns/iter (± 1540139) 0.95
es/visitor/compare/clone 2408847 ns/iter (± 8250) 2416203 ns/iter (± 27867) 1.00
es/visitor/compare/visit_mut_span 2784498 ns/iter (± 3403) 2822536 ns/iter (± 15269) 0.99
es/visitor/compare/visit_mut_span_panic 2816689 ns/iter (± 7788) 2871995 ns/iter (± 8476) 0.98
es/visitor/compare/fold_span 3938180 ns/iter (± 9097) 3991633 ns/iter (± 13407) 0.99
es/visitor/compare/fold_span_panic 4082000 ns/iter (± 9830) 4210565 ns/iter (± 39619) 0.97
es/lexer/colors 16326 ns/iter (± 17) 16804 ns/iter (± 36) 0.97
es/lexer/angular 7846201 ns/iter (± 3292) 7845818 ns/iter (± 4201) 1.00
es/lexer/backbone 1010919 ns/iter (± 4739) 1067780 ns/iter (± 761) 0.95
es/lexer/jquery 5618276 ns/iter (± 5352) 5967154 ns/iter (± 4413) 0.94
es/lexer/jquery mobile 8631436 ns/iter (± 20095) 9159078 ns/iter (± 3577) 0.94
es/lexer/mootools 4429468 ns/iter (± 3707) 4716295 ns/iter (± 3629) 0.94
es/lexer/underscore 846422 ns/iter (± 455) 894780 ns/iter (± 397) 0.95
es/lexer/three 26323188 ns/iter (± 12526) 28000828 ns/iter (± 43091) 0.94
es/lexer/yui 4823008 ns/iter (± 1643) 5024431 ns/iter (± 3646) 0.96
es/parser/colors 30265 ns/iter (± 52) 30286 ns/iter (± 50) 1.00
es/parser/angular 15574325 ns/iter (± 111748) 15744875 ns/iter (± 296318) 0.99
es/parser/backbone 2285525 ns/iter (± 12040) 2308349 ns/iter (± 25885) 0.99
es/parser/jquery 12265072 ns/iter (± 81030) 12575622 ns/iter (± 126714) 0.98
es/parser/jquery mobile 19256215 ns/iter (± 271160) 20571011 ns/iter (± 205345) 0.94
es/parser/mootools 9453850 ns/iter (± 24937) 9587079 ns/iter (± 54678) 0.99
es/parser/underscore 1941430 ns/iter (± 12932) 1962784 ns/iter (± 12068) 0.99
es/parser/three 57081266 ns/iter (± 318091) 61024523 ns/iter (± 315517) 0.94
es/parser/yui 9478149 ns/iter (± 58211) 9669604 ns/iter (± 101958) 0.98
es/preset-env/usage/builtin_type 141942 ns/iter (± 32650) 140296 ns/iter (± 31292) 1.01
es/preset-env/usage/property 21170 ns/iter (± 88) 21221 ns/iter (± 83) 1.00
es/resolver/typescript 112179917 ns/iter (± 2899608) 125553625 ns/iter (± 4804946) 0.89
es/fixer/typescript 85363941 ns/iter (± 3198129) 99353771 ns/iter (± 2370167) 0.86
es/hygiene/typescript 180823810 ns/iter (± 1231102) 214992426 ns/iter (± 2035063) 0.84
es/resolver_with_hygiene/typescript 321119722 ns/iter (± 1866499) 361768327 ns/iter (± 1942129) 0.89
es/visitor/base-perf/module_clone 76820 ns/iter (± 1771) 75666 ns/iter (± 1016) 1.02
es/visitor/base-perf/fold_empty 86438 ns/iter (± 1123) 85671 ns/iter (± 1743) 1.01
es/visitor/base-perf/fold_noop_impl_all 85864 ns/iter (± 1307) 85350 ns/iter (± 1476) 1.01
es/visitor/base-perf/fold_noop_impl_vec 88125 ns/iter (± 2544) 85778 ns/iter (± 1285) 1.03
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) 61 ns/iter (± 0) 0.97
es/visitor/base-perf/boxing_boxed 103 ns/iter (± 0) 103 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 103 ns/iter (± 0) 104 ns/iter (± 0) 0.99
es/visitor/base-perf/visit_contains_this 3483 ns/iter (± 68) 3646 ns/iter (± 102) 0.96
es/base/parallel/resolver/typescript 5575714289 ns/iter (± 487459726) 5811740259 ns/iter (± 586226754) 0.96
es/base/parallel/hygiene/typescript 2144660074 ns/iter (± 20468510) 2404608101 ns/iter (± 35635591) 0.89
misc/visitors/time-complexity/time 5 102 ns/iter (± 0) 96 ns/iter (± 0) 1.06
misc/visitors/time-complexity/time 10 323 ns/iter (± 2) 317 ns/iter (± 5) 1.02
misc/visitors/time-complexity/time 15 686 ns/iter (± 0) 653 ns/iter (± 22) 1.05
misc/visitors/time-complexity/time 20 1271 ns/iter (± 11) 1189 ns/iter (± 4) 1.07
misc/visitors/time-complexity/time 40 6748 ns/iter (± 54) 6509 ns/iter (± 2) 1.04
misc/visitors/time-complexity/time 60 17172 ns/iter (± 59) 16858 ns/iter (± 19) 1.02
es/full-target/es2016 188429 ns/iter (± 355) 188835 ns/iter (± 609) 1.00
es/full-target/es2017 183771 ns/iter (± 542) 183672 ns/iter (± 806) 1.00
es/full-target/es2018 172209 ns/iter (± 476) 171780 ns/iter (± 321) 1.00
es2020_nullish_coalescing 67535 ns/iter (± 91) 66810 ns/iter (± 154) 1.01
es2020_optional_chaining 96193 ns/iter (± 3181) 96865 ns/iter (± 176) 0.99
es2022_class_properties 94004 ns/iter (± 156) 93664 ns/iter (± 198) 1.00
es2018_object_rest_spread 71818 ns/iter (± 125) 71429 ns/iter (± 144) 1.01
es2019_optional_catch_binding 61417 ns/iter (± 110) 61496 ns/iter (± 208) 1.00
es2017_async_to_generator 62118 ns/iter (± 141) 61730 ns/iter (± 149) 1.01
es2016_exponentiation 65447 ns/iter (± 182) 64940 ns/iter (± 268) 1.01
es2015_arrow 69751 ns/iter (± 227) 70648 ns/iter (± 129) 0.99
es2015_block_scoped_fn 66413 ns/iter (± 129) 66448 ns/iter (± 126) 1.00
es2015_block_scoping 138851 ns/iter (± 12034) 138814 ns/iter (± 8213) 1.00
es2015_classes 116665 ns/iter (± 395) 116922 ns/iter (± 406) 1.00
es2015_computed_props 61323 ns/iter (± 88) 61344 ns/iter (± 94) 1.00
es2015_destructuring 117150 ns/iter (± 407) 115887 ns/iter (± 236) 1.01
es2015_duplicate_keys 64109 ns/iter (± 91) 63907 ns/iter (± 110) 1.00
es2015_parameters 80091 ns/iter (± 141) 79853 ns/iter (± 217) 1.00
es2015_fn_name 66527 ns/iter (± 460) 67089 ns/iter (± 487) 0.99
es2015_for_of 64427 ns/iter (± 169) 64510 ns/iter (± 88) 1.00
es2015_instanceof 63731 ns/iter (± 134) 62979 ns/iter (± 89) 1.01
es2015_shorthand_property 60968 ns/iter (± 65) 60856 ns/iter (± 70) 1.00
es2015_spread 61197 ns/iter (± 130) 61060 ns/iter (± 83) 1.00
es2015_sticky_regex 62497 ns/iter (± 94) 62178 ns/iter (± 91) 1.01
es2015_typeof_symbol 62816 ns/iter (± 110) 62466 ns/iter (± 69) 1.01
es/transform/baseline/base 52071 ns/iter (± 90) 51999 ns/iter (± 92) 1.00
es/transform/baseline/common_reserved_word 62593 ns/iter (± 103) 62602 ns/iter (± 42) 1.00
es/transform/baseline/common_typescript 142346 ns/iter (± 2092) 144393 ns/iter (± 5676) 0.99
es/target/es3 168870 ns/iter (± 219) 170576 ns/iter (± 295) 0.99
es/target/es2015 629829 ns/iter (± 1346) 631502 ns/iter (± 1540) 1.00
es/target/es2016 65490 ns/iter (± 87) 65044 ns/iter (± 76) 1.01
es/target/es2017 62254 ns/iter (± 107) 61918 ns/iter (± 109) 1.01
es/target/es2018 81931 ns/iter (± 157) 82045 ns/iter (± 130) 1.00
es/target/es2020 132942 ns/iter (± 230) 132573 ns/iter (± 232) 1.00
babelify-only 665520 ns/iter (± 2895) 670403 ns/iter (± 1108) 0.99
parse_and_babelify_angular 44121133 ns/iter (± 1262116) 47206905 ns/iter (± 785210) 0.93
parse_and_babelify_backbone 5467319 ns/iter (± 61781) 5591634 ns/iter (± 51170) 0.98
parse_and_babelify_jquery 32203836 ns/iter (± 574077) 35081083 ns/iter (± 243709) 0.92
parse_and_babelify_jquery_mobile 54399453 ns/iter (± 314710) 59087298 ns/iter (± 550642) 0.92
parse_and_babelify_mootools 33539068 ns/iter (± 416067) 35693225 ns/iter (± 751150) 0.94
parse_and_babelify_underscore 4378707 ns/iter (± 11002) 4458626 ns/iter (± 40208) 0.98
parse_and_babelify_yui 37071240 ns/iter (± 738663) 38920310 ns/iter (± 1546020) 0.95
html/minify/document/css_spec 42000606 ns/iter (± 174322) 43199471 ns/iter (± 475614) 0.97
html/minify/document/github 17422321 ns/iter (± 23456) 17665930 ns/iter (± 109607) 0.99
html/minify/document/stackoverflow 15647644 ns/iter (± 23706) 15947069 ns/iter (± 105521) 0.98
html/minify/document_fragment/css_spec 40531812 ns/iter (± 226454) 42048796 ns/iter (± 465582) 0.96
html/minify/document_fragment/github 16733011 ns/iter (± 29045) 16939530 ns/iter (± 53237) 0.99
html/minify/document_fragment/stackoverflow 15244223 ns/iter (± 47244) 15524511 ns/iter (± 101576) 0.98
html/document/visitor/compare/clone 342521 ns/iter (± 1598) 341837 ns/iter (± 1258) 1.00
html/document/visitor/compare/visit_mut_span 369625 ns/iter (± 2599) 367213 ns/iter (± 1208) 1.01
html/document/visitor/compare/visit_mut_span_panic 382733 ns/iter (± 1775) 380470 ns/iter (± 1450) 1.01
html/document/visitor/compare/fold_span 407569 ns/iter (± 2240) 403916 ns/iter (± 1717) 1.01
html/document/visitor/compare/fold_span_panic 466138 ns/iter (± 1751) 459763 ns/iter (± 1731) 1.01
html/document_fragment/visitor/compare/clone 343877 ns/iter (± 2102) 336702 ns/iter (± 1838) 1.02
html/document_fragment/visitor/compare/visit_mut_span 367358 ns/iter (± 1672) 364798 ns/iter (± 1489) 1.01
html/document_fragment/visitor/compare/visit_mut_span_panic 373126 ns/iter (± 2181) 374874 ns/iter (± 3109) 1.00
html/document_fragment/visitor/compare/fold_span 404360 ns/iter (± 1813) 406837 ns/iter (± 2273) 0.99
html/document_fragment/visitor/compare/fold_span_panic 465173 ns/iter (± 2275) 460661 ns/iter (± 2996) 1.01
html/lexer/css_2021_spec 15795125 ns/iter (± 10919) 15624433 ns/iter (± 11156) 1.01
html/lexer/github_com_17_05_2022 6090451 ns/iter (± 1479) 6044220 ns/iter (± 1174) 1.01
html/lexer/stackoverflow_com_17_05_2022 5715146 ns/iter (± 1689) 5672744 ns/iter (± 1632) 1.01
html/parser/parser_document/css_2021_spec 25595004 ns/iter (± 72645) 26854188 ns/iter (± 280735) 0.95
html/parser/parser_document/github_com_17_05_2022 8718888 ns/iter (± 15080) 8775936 ns/iter (± 8302) 0.99
html/parser/parser_document/stackoverflow_com_17_05_2022 7675130 ns/iter (± 4690) 7732183 ns/iter (± 9195) 0.99
html/parser/parser_document_fragment/css_2021_spec 26020159 ns/iter (± 143229) 26700764 ns/iter (± 387465) 0.97
html/parser/parser_document_fragment/github_com_17_05_2022 8712157 ns/iter (± 12282) 8819326 ns/iter (± 18052) 0.99
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7681201 ns/iter (± 3961) 7764041 ns/iter (± 9053) 0.99

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

Please sign in to comment.