Skip to content

perf: lazy load babel transform - #405

Merged
pi0 merged 2 commits into
mainfrom
perf/lazy-transform
Sep 22, 2025
Merged

pi0 merged 2 commits into
mainfrom
perf/lazy-transform

Conversation

@pi0

@pi0 pi0 commented Sep 22, 2025

Copy link
Copy Markdown
Member

This PR optimizes init time by lazy importing Babel transformer only if needed (transform needed, cache missing, and native also not possible)

Benchmak

Before: (load:83ms + import:39ms)

> node v22.14.0
jiti:load: 83.076ms
jiti:load: +17.93 MB (heap)
jiti:init: 0.517ms
jiti:import:ts: 39.263ms
jiti:import:ts: 7.963ms
jiti:import:ts: 8.329ms
jiti:import:ts: 7.955ms
--------------------------------
> deno 2.5.1
jiti:load: 124ms
jiti:load: +20.03 MB (heap)
jiti:init: 0.579ms
jiti:import:ts: 45.1ms
jiti:import:ts: 11.4ms
jiti:import:ts: 9.96ms
jiti:import:ts: 8.91ms
--------------------------------
> bun 1.2.21
[81.33ms] jiti:load
jiti:load: +0.00 MB (heap)
[0.50ms] jiti:init
[3.45ms] jiti:import:ts
[1.72ms] jiti:import:ts
[2.87ms] jiti:import:ts
[1.18ms] jiti:import:ts

After: (load:8.8ms + lazy-import: 108ms)

> node v22.14.0
jiti:load: 8.824ms
jiti:load: +1.07 MB (heap)
jiti:init: 0.478ms
jiti:import:ts: 108.271ms
jiti:import:ts: 7.452ms
jiti:import:ts: 6.475ms
jiti:import:ts: 9.583ms
--------------------------------
> deno 2.5.1
jiti:load: 4.17ms
jiti:load: +1.30 MB (heap)
jiti:init: 0.620ms
jiti:import:ts: 159ms
jiti:import:ts: 12.7ms
jiti:import:ts: 9.45ms
jiti:import:ts: 8.96ms
--------------------------------
> bun 1.2.21
[20.72ms] jiti:load
jiti:load: +0.00 MB (heap)
[0.53ms] jiti:init
[3.64ms] jiti:import:ts
[2.01ms] jiti:import:ts
[1.72ms] jiti:import:ts
[1.07ms] jiti:import:ts
``

@pi0

pi0 commented Sep 22, 2025

Copy link
Copy Markdown
Member Author

/cc @danielroe 😄

@pi0
pi0 merged commit c48a5d5 into main Sep 22, 2025
7 checks passed
@pi0
pi0 deleted the perf/lazy-transform branch September 22, 2025 12:21
@pi0 pi0 mentioned this pull request Sep 22, 2025
1 task done
@danielroe

Copy link
Copy Markdown
Member

YES! ⚡

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants