0
点赞
收藏
分享

微信扫一扫

TypeScript 走向原生迎来性能飞跃

TypeScript 编译器一直采用 自举(bootstrapping) 方式,意味着它是用 TypeScript 自己实现的。虽然这提供了一定的优势,但同时也带来了 性能瓶颈,尤其是在处理大型代码库时。

主要性能瓶颈:

  • JIT(即时编译)开销:每次运行 TypeScript 时,都要额外消耗时间启动 JavaScript 运行时。
  • 动态对象模型:JavaScript 允许灵活的数据结构,但这种特性在编译器这种高计算密集型任务中会拖慢速度。
  • 内存管理:无法像底层语言一样直接分配内存,导致数据结构的性能受限。
  • 单线程执行:无法利用多线程处理任务,导致编译速度受限。

结果就是:

  • 大型项目的加载和检查时间变长
  • 经常发生内存溢出
  • 开发者不得不在“编辑器启动速度”“完整代码分析”**之间做妥协


为什么选 Go,而不是 Rust 或 C++?

微软团队在寻找新的编译器实现语言时,评估了 Rust、C++ 和 Go。最终,他们选择了 Go 作为 TypeScript 的新语言,这个决定可能让不少人感到惊讶。

为什么不是 Rust 或 C++?

  • Rust:虽然性能强大,但数据结构管理需要更多调整,迁移成本较高。
  • C++:更贴近底层,但开发效率较低,维护成本较高。

为什么选 Go?

支持跨平台原生代码 —— 可在不同系统上编译优化后的 TypeScript。

更好的数据布局控制 —— 提高内存管理效率。

支持循环数据结构 —— TypeScript 代码中经常用到。

自动垃圾回收(GC) —— 让开发者无需手动管理内存。

内置并发支持 —— 充分利用多核 CPU,极大提升编译速度。

10 倍性能提升,具体有多快?

VS Code 项目加载时间

9.6 秒 → 1.2 秒(8 倍提升)

内存占用

原生版 TypeScript 使用的内存减少 50%

整体编译性能

相比当前的 TypeScript 5.8,速度提升 10 倍!

举报

相关推荐

0 条评论