oxc-project
oxc
BlogDocsChangelog

perf(transformer/using): inline `enter_statement`

#9680Merged
Comparing
03-11-perf_transformer_using_inline_enter_statement_
(
d303ba9
) with
main
(
076d872
)
CodSpeed Performance Gauge
N/A
Untouched
39

Benchmarks

Passed

transformer[checker.ts]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
+2%
25.6 ms25 ms
transformer[pdf.mjs]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
+2%
11.1 ms10.9 ms
transformer[antd.js]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
+1%
55.3 ms54.6 ms
semantic[pdf.mjs]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
17.3 ms17.3 ms
parser_napi_raw[pdf.mjs]
napi/parser/bench.bench.mjs
CodSpeed Performance Gauge
0%
266.6 ms265.9 ms
parser_napi[pdf.mjs]
napi/parser/bench.bench.mjs
CodSpeed Performance Gauge
0%
1.8 s1.8 s
mangler[antd.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_mangler
CodSpeed Performance Gauge
0%
16.1 ms16.1 ms
lexer[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
20.8 µs20.8 µs
codegen[checker.ts]
tasks/benchmark/benches/codegen.rs::codegen::bench_codegen
CodSpeed Performance Gauge
0%
23.1 ms23.1 ms
parser[cal.com.tsx]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
29.7 ms29.7 ms
parser[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
88.8 µs88.7 µs
semantic[checker.ts]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
65.4 ms65.3 ms
parser_napi_raw[cal.com.tsx]
napi/parser/bench.bench.mjs
CodSpeed Performance Gauge
0%
699.7 ms699.4 ms
parser_napi[RadixUIAdoptionSection.jsx]
napi/parser/bench.bench.mjs
CodSpeed Performance Gauge
0%
4.9 ms4.9 ms
minifier[react.development.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier
CodSpeed Performance Gauge
0%
1.8 ms1.8 ms
linter[cal.com.tsx]
tasks/benchmark/benches/linter.rs::linter::bench_linter
CodSpeed Performance Gauge
0%
1.2 s1.2 s
linter[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/linter.rs::linter::bench_linter
CodSpeed Performance Gauge
0%
2.7 ms2.7 ms
mangler[react.development.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_mangler
CodSpeed Performance Gauge
0%
294.7 µs294.6 µs
lexer[pdf.mjs]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
3.8 ms3.8 ms
linter[checker.ts]
tasks/benchmark/benches/linter.rs::linter::bench_linter
CodSpeed Performance Gauge
0%
3 s3 s
lexer[cal.com.tsx]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
5.7 ms5.7 ms
semantic[antd.js]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
106.4 ms106.4 ms
mangler[typescript.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_mangler
CodSpeed Performance Gauge
0%
39.7 ms39.7 ms
parser[checker.ts]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
56.5 ms56.5 ms
minifier[antd.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier
CodSpeed Performance Gauge
0%
167.6 ms167.6 ms
lexer[antd.js]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
24.1 ms24.1 ms
estree[checker.ts]
tasks/benchmark/benches/parser.rs::parser::bench_estree
CodSpeed Performance Gauge
0%
88.4 ms88.4 ms
lexer[checker.ts]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer
CodSpeed Performance Gauge
0%
14.5 ms14.5 ms
parser[antd.js]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
112.1 ms112.1 ms
minifier[typescript.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier
CodSpeed Performance Gauge
0%
294.5 ms294.5 ms
parser[pdf.mjs]
tasks/benchmark/benches/parser.rs::parser::bench_parser
CodSpeed Performance Gauge
0%
18.1 ms18.1 ms
isolated-declarations[vue-id.ts]
tasks/benchmark/benches/isolated_declarations.rs::transformer::bench_isolated_declarations
CodSpeed Performance Gauge
0%
58.7 ms58.7 ms
parser_napi_raw[checker.ts]
napi/parser/bench.bench.mjs
CodSpeed Performance Gauge
0%
1.1 s1.1 s
codegen_sourcemap[checker.ts]
tasks/benchmark/benches/codegen.rs::codegen::bench_codegen
CodSpeed Performance Gauge
0%
66.1 ms66.2 ms
semantic[cal.com.tsx]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
26.5 ms26.6 ms
parser_napi_raw[RadixUIAdoptionSection.jsx]
napi/parser/bench.bench.mjs
CodSpeed Performance Gauge
0%
1.3 ms1.3 ms
transformer[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
0%
146.1 µs146.3 µs
semantic[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic
CodSpeed Performance Gauge
0%
74 µs74.3 µs
transformer[cal.com.tsx]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer
CodSpeed Performance Gauge
-1%
34.9 ms35.1 ms

Commits

Click on a commit to change the comparison range
Base
main
2ddad59
+0.12%
perf(transformer/using): inline `enter_statement` (#9680) `enter_statement` is a hot path, and most `Statement`s are not `BlockStatement`s or `SwitchStatement`s, so in most cases this method does nothing. Optimize for the common "nothing to do here" case by moving as much logic as possible out of `enter_statement`, to make that function as small as possible, so it can be inlined. Mark it `#[inline]`. Hopefully now when a `Statement` is neither of the types this visitor is interested in, finding that out and exiting will just be a couple of quick checks, and won't incur the cost of a function call.
1b8c6b0
10 months ago
by overlookmotel
© 2025 CodSpeed Technology
Home Terms Privacy Docs