【发布时间】:2014-09-29 12:45:44
【问题描述】:
我不想使用像 nodetime 这样的服务。我有小型中间件 nodejs 应用程序。现在我的应用程序以奇怪的方式使用 cpu http://s27.postimg.org/fgzmmh85f/cpu.png 所以我需要简单的工具来分析我的代码。我尝试使用 node --prof app.js 但 Chrome 开发工具没有打开生成的日志文件。
请提供工具以找出瓶颈。我也无法理解 v8 垃圾收集器的工作原理。
【问题讨论】:
我不想使用像 nodetime 这样的服务。我有小型中间件 nodejs 应用程序。现在我的应用程序以奇怪的方式使用 cpu http://s27.postimg.org/fgzmmh85f/cpu.png 所以我需要简单的工具来分析我的代码。我尝试使用 node --prof app.js 但 Chrome 开发工具没有打开生成的日志文件。
请提供工具以找出瓶颈。我也无法理解 v8 垃圾收集器的工作原理。
【问题讨论】:
我不是节点专家,但一段时间以来我一直在尝试分析一些 JS 代码。这是我可以告诉你的:
有两种分析方法,但都提供相同的数据。第一个是使用node -- 运行您的代码,这将生成一个isolate*.log 文件。您将此文件提供给node --prof-process,这将为您提供 smoe 输出,如果您有点幸运,您可以理解并采取行动。
第二个差不多是这样的:
var profiler = require('v8-profiler');
profiler.startProfiling('carto');
[your code here]
var profile = profiler.stopProfiling('carto');
profile.export(function(error, result) {
fs.writeFileSync('carto.cpuprofile', result);
profile.delete();
})
这将生成一个.cpuprofile,您可以将其加载到chromium 的JS Profiler 中。这可以在开发人员工具中找到,您可能必须在更多工具菜单中启用 Javascript Profiler。这将为您提供三种不同的方式来查看您在哪些功能上花费了时间。
【讨论】: