在 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 的。
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
以前是Sun
,dtrace
的原作者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++ 程序中分析常驻内存使用情况和许多页面错误