19

我面前有一小段 node.js 代码,如下所示:

console.time("queryTime");
doAsyncIOBoundThing(function(err, results) {
    console.timeEnd("queryTime");
    // Process the results...
});

当然,当我在我的(否则空闲的)开发系统上运行它时,我会收到一条很好的控制台消息,如下所示:

queryTime: 564ms

但是,如果我将其投入生产,是否可能同时进行多个异步调用,并且每个调用都会覆盖前一个计时器?或者节点是否有某种神奇的执行上下文,为每个“执行线程”提供一个单独的控制台计时器命名空间?

4

3 回答 3

36

只需使用独特的标签,它就会很安全。这就是您使用标签来唯一标识开始时间的原因。

只要您不意外使用标签两次,一切都会完全按预期工作。另请注意,node通常只有一个执行线程。

于 2013-03-11T20:56:41.363 回答
9

这个简单的代码不起作用吗?

var labelWithTime = "label " + Date.now();
console.time(labelWithTime);
// Do something
console.timeEnd(labelWithTime);
于 2016-06-08T11:38:18.360 回答
6

考虑新的 NodeJS 功能,因为它也在发展。请查看:

process.hrtime()& NodeJS 的其他性能 API 钩子:

https://nodejs.org/api/perf_hooks.html#perf_hooks_performance_timing_api

于 2018-04-13T17:57:08.150 回答