Benchmarks
Compiler performance by benchmark category: tsz vs TSGO
Benchmarks are run using hyperfine with warmup passes and multiple runs. Each benchmark measures wall-clock time for a full type-check pass (no emit).
tsz is compiled with --profile dist (LTO enabled, single codegen unit). tsgo is the native Go compiler from the TypeScript team.
Category Breakdown
General Benchmarks
Core compiler behavior on representative mixed workloads.
Synthetic Type Workloads
Generated stress tests that isolate specific type-system patterns.
Solver Stress Tests
Upper-bound tests for recursive, mapped, and conditional type complexity.
External Libraries: ts-toolbelt
Real-world ts-toolbelt files with heavy type-level programming patterns.
External Libraries: ts-essentials
Real-world ts-essentials files from the pinned upstream snapshot.
How to Read These Charts
Each category is normalized independently for readability: bar lengths are scaled to the slowest benchmark within that category.
Running Benchmarks Locally
To generate benchmark data yourself:
./scripts/bench/bench-vs-tsgo.sh --json
This produces a JSON file in artifacts/ that the website build script uses to generate charts. Use --quick for faster results with fewer iterations.
See bench-vs-tsgo.sh for full usage.