Skip to content

perf(es/parser): micro-optimize parser hot paths#11859

Draft
hardfist wants to merge 7 commits into
swc-project:mainfrom
hardfist:codex/ecma-parser-micro-optimize
Draft

perf(es/parser): micro-optimize parser hot paths#11859
hardfist wants to merge 7 commits into
swc-project:mainfrom
hardfist:codex/ecma-parser-micro-optimize

perf(es/parser): narrow no-call subscript start check

ae6ab6d
Select commit
Loading
Failed to load commit list.
CodSpeed HQ / CodSpeed Performance Analysis succeeded May 16, 2026 in 0s

Performance Gate Passed

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 11 improved benchmarks
✅ 208 untouched benchmarks
⏩ 31 skipped benchmarks1

Performance Changes

Benchmark BASE HEAD Efficiency
es/large/parser 36.3 ms 35 ms +3.61%
typescript/fast-strip 403 µs 389.5 µs +3.47%
es/parser/angular 14.4 ms 14 ms +2.89%
es/parser/jquery mobile 17.9 ms 17.4 ms +2.92%
es/parser/mootools 9 ms 8.8 ms +2.51%
es/parser/three 56 ms 54.6 ms +2.51%
es/parser/typescript 317.8 ms 308.2 ms +3.09%
es/parser/underscore 2 ms 1.9 ms +2.59%
es/parser/backbone 2.3 ms 2.2 ms +2.24%
es/parser/jquery 11.6 ms 11.3 ms +2.94%
es/parser/yui 8.9 ms 8.7 ms +2.35%

Tip

Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.


Comparing hardfist:codex/ecma-parser-micro-optimize (ae6ab6d) with main (2ab1b8a)2

Open in CodSpeed

Footnotes

  1. 31 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

  2. No successful run was found on main (4c44d5d) during the generation of this report, so 2ab1b8a was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.