分析 TypeScript Node.js 应用程序
Posted
技术标签:
【中文标题】分析 TypeScript Node.js 应用程序【英文标题】:Profiling of a TypeScript Node.js application 【发布时间】:2020-04-15 11:25:18 【问题描述】:我正在寻找一种工具来,并且无需修改整个代码源。
我的意思是分析:使用某些特定工具启动应用程序,它会输出如下结果:
方法 |消耗内存 |消耗时间
a() | 1024 | 20ms ….
我做了一些互联网研究,发现了这个:https://github.com/screepers/screeps-typescript-profiler
但是使用它,我不得不编辑整个代码(通过添加 @Profiler 装饰器),我正在寻找自动检测方法的东西。
感谢您的帮助!
【问题讨论】:
【参考方案1】:您可以使用 WebStorm IDE 进行 V8 CPU 和内存分析。这是一个指南:https://www.jetbrains.com/help/webstorm/v8-cpu-and-memory-profiling.html。
无需更改代码的任何部分。您可以运行V8 Profiling,获取堆快照并查看有用的快照差异。
您可以使用默认的 Webstorm 指南,但是,对于节点 12,有 a bug,您将在 CLI 中收到错误:bad option: --log-timer-events
。
对于带有 Express 和 Socket.io 服务器的 Typescript 项目,我将它与 ts-node-dev 工具一起使用,该工具只需将所有未知参数传递给 ts-node
,然后传递给 node
。因此,您可以在使用ts-node
时应用相同的方法。 手动设置--prof
和--logfile=logfile-profiling.log
参数。这是我的示例配置:
禁用 Record CPU profiling info 以避免错误(我们手动设置了 --prof 和 --logfile)并启用 允许拍摄堆快照。
然后为此配置运行调试。要拍摄新的堆快照,请在调试应用时单击左侧面板的底部图标:
堆快照和 CPU 分析日志将存储在您的项目文件夹中,您可以从菜单 工具 > V8 分析 > 分析 V8 堆快照 以及 CPU 日志中分析它们:分析V8 分析日志。 CPU 分析日志是按间隔创建的,因此您可以在运行应用的同时打开新日志。
【讨论】:
至少--log-internal-timer-events
还在工作以上是关于分析 TypeScript Node.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio 2012 express 进行 TypeScript、node.js 开发
从 node.js 和 Typescript 中的动态文件名加载 JSON 的最佳方法是啥?
Visual Studio 与 WebStorm 中的 Typescript 编译 - 两者都使用 Node.js 进行编译吗?