- Notifications
You must be signed in to change notification settings - Fork 720
Open
Labels
Domain: PerformanceRelated to performanceRelated to performanceDomain: tsconfigRelated to tsconfig parsing, loadingRelated to tsconfig parsing, loading
Description
Discussed in #1060
Originally posted by slackerzz June 5, 2025
I’ve been testing @typescript/native-preview
on my MacBook M2 since its release, and it feels slower than tsc
.
For instance, on the same codebase, tsc
(v5.6.2) gives me:
❯ time npx tsc -p . --noEmit --extendedDiagnostics Files: 3193 Lines of Library: 40862 Lines of Definitions: 1750956 Lines of TypeScript: 24634 Lines of JavaScript: 160 Lines of JSON: 94 Lines of Other: 0 Identifiers: 1718657 Symbols: 953103 Types: 14732 Instantiations: 40044 Memory used: 1399347K Assignability cache size: 4238 Identity cache size: 151 Subtype cache size: 93 Strict subtype cache size: 44 I/O Read time: 0.65s Parse time: 1.67s ResolveTypeReference time: 0.03s ResolveModule time: 0.26s ResolveLibrary time: 0.01s Program time: 2.90s Bind time: 1.05s transformTime time: 0.11s commentTime time: 0.00s printTime time: 0.14s Emit time: 0.14s Check time: 0.19s I/O Write time: 0.00s Total time: 4.27s npx tsc -p . --noEmit --extendedDiagnostics 14,05s user 2,62s system 68% cpu 24,468 total
while withtsgo
:
❯ time npx tsgo -p . --noEmit --extendedDiagnostics Files: 3199 Lines: 1819088 Identifiers: 1720502 Symbols: 1299526 Types: 206149 Instantiations: 726088 Memory used: 1052469K Memory allocs: 24159741 Parse time: 0.292s Bind time: 0.044s Check time: 0.393s Emit time: 0.000s Total time: 0.741s npx tsgo -p . --noEmit --extendedDiagnostics 92,93s user 3,57s system 96% cpu 1:40,31 total
As you can see, tsc
reports a total time of 4.27s but actually takes 24.4s, while tsgo
reports 0.741s but takes 1 minute and 40 seconds.
What’s going on here?
I also tried the LSP (both in VS Code and Neovim), and it takes several minutes to start and respond to code changes.
Metadata
Metadata
Assignees
Labels
Domain: PerformanceRelated to performanceRelated to performanceDomain: tsconfigRelated to tsconfig parsing, loadingRelated to tsconfig parsing, loading