如何调试 TypeScript 编译性能问题

Posted

技术标签:

【中文标题】如何调试 TypeScript 编译性能问题【英文标题】:How to debug TypeScript compilation performance issues 【发布时间】:2019-08-12 13:14:25 【问题描述】:

我的 TypeScript 项目已经进行了一段时间,而且相当大。最近编译时性能变得明显变差了。我认为很可能是我在某处包含的一些“整洁”的打字技巧导致了这种情况。

不幸的是,这是一个大型项目,并且包含许多其他大型 TypeScript 依赖项,因此很难知道确切的根本原因。

在这种情况下是否有任何工具可以调试 TS 编译器类型检查的性能?例如。查看哪些文件/类型占用 TypeScript 最多的时间来编译。

【问题讨论】:

--diagnostics 有帮助吗? @AaronBeall --diagnostics 告诉我我有多少类型和文件,等等。但这并没有让我更接近了解哪些文件或类型导致问题。有没有办法知道,例如,哪些文件生成了最多的类型?大多数“昂贵”的类型最有趣,但我怀疑很难定义。 我也有兴趣诊断缓慢的 TypeScript 性能 - 来自社区的任何线索? 我有一个使用 typebox 库 github.com/sinclairzx81/typebox 的 1600 loc 项目,我也遇到了性能问题(编译时间超过 120 秒)。 你可以试试this approach 并检查每个声明文件的大小,看看哪些是最大的:tsc --noEmit false --declaration --emitDeclarationOnly --extendedDiagnostics --declarationDir ./declarations 【参考方案1】:

TypeScript 4.1 引入了 generateTrace 标志,以便更容易识别程序中编译时间最长的部分。

有专门的WIKIhere

请记住:

此功能仍处于试验阶段,可能会在 TS 4.2 中发生重大变化

【讨论】:

以上是关于如何调试 TypeScript 编译性能问题的主要内容,如果未能解决你的问题,请参考以下文章

ThinkJS 2.1:支持 TypeScript,性能提升 90%

性能工具之调试工具 GDB(你以为性能分析中用不到吗?)

Linux下性能测量和调试诊断工具Systemtap

c++ Windows 调试性能与 linux 相比非常慢

禁用 MSBuild TypeScript 编译

在调试或发布/分发模式下编译时 iOS 应用程序的性能