我面前有一小段node.js代码,如下所示:
console.time("queryTime");
doAsyncIOBoundThing(function(err, results) {
console.timeEnd("queryTime");
// Process the results...
});
当然,当我在我的(否则是空闲的)开发系统上运行它时,我得到一个很好的控制台消息:
queryTime: 564ms
但是,如果我将其投入生产,那么同时进行的异步调用是否会有多次,并且每个异步调用都会覆盖以前的计时器?或者节点是否具有某种神奇的执行上下文,它为每个“执行线程”提供了一个单独的控制台计时器命名空间?
答案 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