node.time中的console.time()安全吗?

sti*_*ure 18 javascript node.js

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

console.time("queryTime");
doAsyncIOBoundThing(function(err, results) {
    console.timeEnd("queryTime");
    // Process the results...
});
Run Code Online (Sandbox Code Playgroud)

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

queryTime: 564ms
Run Code Online (Sandbox Code Playgroud)

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

Zet*_*eta 31

只需使用独特的标签即可.这就是您使用标签来唯一标识开始时间的原因.

只要您不小心使用标签两次,一切都将完全按预期工作.还要注意,node通常只有一个执行线程.

  • @travis:但要小心:任何出现的`this._times [label]`都会隐式调用你的`toString`方法.因此,该方法必须是一致的(对于给定的对象,它必须每次都给出相同的结果),*和*它必须是唯一的(它必须为不同的对象提供不同的结果).所以我认为你最好只使用字符串. (3认同)

Eri*_*sky 6

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

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

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


Tal*_*zki 5

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

var labelWithTime = "label " + Date.now();
console.time(labelWithTime);
// Do something
console.timeEnd(labelWithTime);
Run Code Online (Sandbox Code Playgroud)