TypeScript 7.0 编译大提速

2 阅读4分钟

我们的项目是一个前端项目, 有大约一百万行typescript代码,微软已经推出go 版本的typescript, 据说编译速度能提高10倍,本次就用我们的项目实战一把, 看看编译性能究竟有多少提高.

结论先行

**TypeScript 7.0 在本项目的 CLI 编译检查中展现出非常明确的性能收益:**外部 wall time (指程序 从开始执行到结束所花费的时间,包括了 CPU 时间和与 CPU 时间无关的时间)均值从 20.854s 降至 3.417s,降低 83.6%;TypeScript 内部 Total time(TypeScript 自己在 --extendedDiagnostics 里报告的总耗时) 均值从 19.326s 降至 2.879s,降低 85.1%;Check time(TypeScript 做类型检查花的时间) 均值从 15.267s 降至 1.940s,降低 87.3%。

换句话说,在这个约百万行级别的 TypeScript 代码库上,TS 7 把一次完整类型检查的等待时间从“十几到二十秒级”压缩到了“三秒级”。这类提升对本地开发、CI 快速反馈和大型项目日常重构都有直接价值。

核心指标TS 6.0.2TS 7.0改善
外部 wall time 均值20.854s3.417s降低 83.6%,约 6.10x
TypeScript Total time 均值19.326s2.879s降低 85.1%,约 6.71x
Check time 均值15.267s1.940s降低 87.3%,约 7.87x
Memory used 均值850.624 MB638.801 MB降低 24.9%

测试口径

为了尽量聚焦 TypeScript 编译器本身,本次主测试使用 tsc CLI,而不是完整生产打包。完整打包会混入资源生成、CSS/Sass、模块优化和压缩等因素,不适合作为编译器性能的唯一判断依据。

项目说明
基线版本TypeScript 6.0.2
评估版本TypeScript 7.0.1(npm 标签)
命令形态tsc -p <benchmark tsconfig> --noEmit --extendedDiagnostics --pretty false --skipLibCheck
采样方式每个版本 2 轮 warm-up,随后 7 轮正式样本
统计指标外部 wall time、Total time、Check time、Parse time、Bind time、Memory used
运行环境Windows,Intel Core i7-10750H,6 核 / 12 线程,79.76 GB 内存,Node.js v24.11.1

项目规模

指标数值
仓库 TS/TSX 文件总数2,754
.ts 文件数1,463
.d.ts 文件数1,291
.tsx 文件数0
源码文本总行数1,137,460
非空行数1,066,131
TS/TSX 文件总大小44,799,378 bytes(约 42.72 MiB)
实际 tsc Program 文件数1,317
实际 tsc Program TypeScript 行数389,048
实际 tsc Program Definition 行数63,453
实际 tsc Program Library 行数53,396

性能数据

7 轮正式样本显示,TS 7 的提升不是偶然波动,而是稳定地体现在每一轮测量中。

轮次TS 6 wall(s)TS 6 total(s)TS 6 check(s)TS 7 wall(s)TS 7 total(s)TS 7 check(s)
119.58317.57014.1203.2582.7811.877
222.45420.81016.3703.1332.6361.747
320.91619.60014.8102.8992.4531.665
420.37818.86015.2303.6763.0852.139
521.40020.12016.1603.6343.1612.306
621.24019.66015.4103.7463.1652.080
720.00818.66014.7703.5762.8721.763
指标TS 6.0.2 均值TS 7.0.1 均值降低幅度加速倍数
外部 wall time20.854s3.417s-83.6%6.10x
TypeScript Total time19.326s2.879s-85.1%6.71x
Check time15.267s1.940s-87.3%7.87x
Parse time2.011s0.300s-85.1%6.70x
Bind time1.109s0.072s-93.5%15.40x
Memory used850.624 MB638.801 MB-24.9%1.33x

诊断规模对比

值得注意的是,TS 7 在内部统计口径上并不是简单减少工作量。Symbols、Types 和 Instantiations 的报告值更高,但整体耗时和内存占用反而显著下降,说明性能收益主要来自编译器实现和执行效率的提升。

指标TS 6.0.2TS 7.0.1变化
Files1,3171,317输入规模一致
Identifiers727,100727,100源码标识符规模一致
Symbols427,679541,414+26.6%
Types163,096330,466+102.6%
Instantiations85,040146,138+71.8%
Memory used 均值850.624 MB638.801 MB-24.9%

对开发体验的影响

  • 本地类型检查反馈更短:一次检查从约 20.9s 降至约 3.4s,更接近可频繁执行的开发节奏。
  • CI 中的类型检查阶段更有优化空间:即便只把 TypeScript 检查作为单独任务,TS 7 也能显著缩短等待时间。
  • 大型重构更容易保持连续性:Check time 降低 87.3%,对类型密集代码库尤其有意义。
  • 内存占用更友好:Memory used 均值降低约 211.8 MB,降低幅度 24.9%。

落地建议

从实测数据看,TS 7 已经值得在大型 TypeScript 项目中提前评估。建议采用渐进式路线:先把 TS 7 作为并行类型检查任务接入本地脚本或 CI,对比诊断结果和耗时;随后再评估现有构建工具、loader 和插件对 TS 7 编译器接口的支持情况。

如果团队的主要痛点是类型检查等待时间,可以优先把 TS 7 用在独立检查链路上,而不必立刻替换生产打包流程。这样既能尽早获得性能收益,也能让工具链升级保持可控。

总结

本次项目实测表明,TypeScript 7.0.1 对大型 TypeScript 代码库的 CLI 编译检查有非常积极的影响:主耗时指标普遍降低 83% 以上,Check time 接近 8 倍加速,内存均值降低约四分之一。对需要频繁类型检查的团队来说,TS 7 值得尽早进入评估清单。