【问题标题】:What's the better way to get the Node.js app total time execution?获得 Node.js 应用程序总执行时间的更好方法是什么?
【发布时间】:2013-07-19 20:05:52
【问题描述】:

我制作了一个Node.js 应用程序,它与C# 中的另一个解决方案完全相同。这两个应用程序都以递归方式从目录中获取所有 javascript 文件并执行 uglify-js 命令来缩小文件。

我的项目有大约 150 个 JavaScript 文件要压缩,C# 方法大约需要 22 秒来完成所有工作(使用 线程)。

在阅读了 Node.js 文档和书籍之后,我决定采用Node.js 的方式。我已经这样做了,但我不能报告总时间 Node.js 做这些事情,因为它的异步方法......

(是的,我知道,我在 C# 中使用的线程也是异步的)

那么,获得 Node.js 应用程序总执行时间的更好方法是什么?

我将Node.js v0.10.13 用作win32 环境。

【问题讨论】:

  • 您的总执行时间是完成这一切所需的时间。做一些异步的事情并不意味着它可以更快地完成。或者,您是否正在运行子流程? Node.js 不做线程(为你的 JS),那么你想具体测量什么?
  • 是的@Brad。我正在运行子进程并想知道所有子进程的总执行时间,当 node.js 应用程序返回命令时...
  • 你可以只测量进程运行的时间,除非你正在寻找 CPU 时间?
  • 如果您需要 CPU 时间:stackoverflow.com/a/7774034/362536
  • 谁能解释为什么process.uptime() 不起作用?

标签: javascript node.js execution-time


【解决方案1】:

在脚本的最开始,使用console.time('Some_Name_Here');,然后在脚本完成执行的地方使用console.timeEnd('Some_Name_Here');

它是 Node.js 的一个快速、原生的功能,可以让您不必初始化一个新的 Date 对象。

这里有一些关于 console.time() 方法的简短文档:http://nodejs.org/api/stdio.html#stdio_console_time_label

【讨论】:

  • 谢谢@Bagavatu,但我的应用程序有各种与child_process 的异步函数,我不知道在哪里可以调用console.timeEnd。是否有一个全球性的结束事件?
  • 我发现process Event: 'exit'console.time() 也可以!
【解决方案2】:

你可以做时间开始/结束计时方法。

在你的主脚本的开头你抓住时间。

var start = Date.now();

process.on("exit", function() {
  var end = Date.now();
  console.log("Time taken: %ds", (end - start)/1000);
});

// all you code...
// more code...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 2022-12-01
相关资源
最近更新 更多