在 Linux 中分析 Node.JS(代码)执行时间

Posted

技术标签:

【中文标题】在 Linux 中分析 Node.JS(代码)执行时间【英文标题】:Profiling Node.JS (code) execution time in Linux 【发布时间】:2012-10-20 01:17:40 【问题描述】:

我正在寻找一种方法来对 Linux 上的脚本执行时间进行精确的Node.JS 分析

有一些有趣的项目,例如 NodeTime.com Performance Profiler,但它描述了 I/O httprequests 的时间等,而不是代码行的执行时间

我正在寻找一种方法来确定我可以在哪里优化我的 javascript大部分时间都花在了哪里,等等。


我见过的一个有趣的方法是尝试create a FlameGraph using DTrace 来分析 Node.JS。

但是,dtrace 是非常特定于 Solaris 的。

对于 Linux (Debian/Ubuntu),dtrace 可以在 sytemtap-sdt-dev 包中找到。但是,stap dtrace 不一样,缺少所有相关的钩子/探针。 Paul Fox 从 Unix 版本制作了一个端口。它的功能更完整,但不知何故,钩子/探针在用户空间中无法像 Solaris 那样工作,也不能用于分析节点。ftp://crisp.dyndns-server.com/pub/release/website/dtrace/(构建起来非常容易,请参阅自述文件。) 还有一个Oracle 端口,但没有would recommend 它。显然,它只有大约 0.1% 的探测器来自 Paul Fox 端口。 (这很讽刺,因为Oracle 以前是Sundtrace 的原作者Solaris

如何在 Linux 中使用终端或 Eclipse 来分析我的 Node.JS 脚本的代码?我正在寻找特定的东西,例如 Zend Profiler 显示每个脚本的执行时间php 脚本代码中的命令。

【问题讨论】:

【参考方案1】:

“look”是 Vadim 制作的一个非常好的工具,用于分析 NodeJS 应用程序。

看这里:

https://github.com/baryshev/look

【讨论】:

看来“look”是nodetime 的一个fork,它不需要将分析信息传达给第三方网站。我还没有尝试过,但这可能很酷。 我试过这个但不明白如何使用它。它给我显示“0.02% - channel.onread”(不知道是什么)和“99.98% -(程序)”,无法进入“程序”并查看具体例程的时间。跨度> 【参考方案2】:

如果您不反对使用nodetime,它实际上确实有 CPU 分析:

请参阅:http://nodetime.com/blog/cpu-profiling-with-nodetime

【讨论】:

很好,我以前错过了。我更喜欢火焰图样式分析器,但我会尝试这个,直到有人有更好的主意。【参考方案3】:

https://www.npmjs.org/package/node.profiler 正是你需要的... 它在监控模式下运行您的项目,并在您完成有关函数的详细信息后生成一个图表,每个函数被调用了多少次以及在那里花费的时间。

【讨论】:

以上是关于在 Linux 中分析 Node.JS(代码)执行时间的主要内容,如果未能解决你的问题,请参考以下文章

使用 Valgrind 在 Python 程序中分析内存时遇到问题

在 Linux 上的 C++ 程序中分析常驻内存使用情况和许多页面错误

如何在 Java Mission Control 中分析异常?

在 codeigniter 2.1 中分析缓存使用情况

在 C++ 中分析函数

如何在 Visual Studio 2008 中分析 MsTest 的单元测试?