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

时间:2013-03-11 20:43:48

标签: javascript node.js

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

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

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

queryTime: 564ms

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

3 个答案:

答案 0 :(得分:30)

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

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

答案 1 :(得分:5)

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

gulp.task('move', function () {
  console.log('-- gulp is running task "move"');
  return gulp.src(['app/**/*.html', 'app/**/*.css'])
    .pipe(gulp.dest('dist'));
})

gulp.task('compress', ['compile'], function () {
  console.log('-- gulp is running task "compress"');
  return gulp.src('dist/**/*.js')
    .pipe(minify({
        ext: {
            src: '-debug.js',
            min: '.js'
        },
        noSource: true
    }))
    .pipe(gulp.dest('dist'));
});

答案 2 :(得分:2)

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

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

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