19

目の前にnode.jsコードのスニペットがあります。これは次のようになります。

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

そしてもちろん、これを(それ以外の場合はアイドル状態の)開発システムで実行すると、次のような素晴らしいコンソールメッセージが表示されます。

queryTime: 564ms

ただし、これを本番環境に移行すると、同時に進行中の非同期呼び出しが複数発生する可能性があり、それぞれが前のタイマーを上書きしますか?または、ノードには、各「実行スレッド」に個別のコンソールタイマー名前空間を与えるある種の魔法の実行コンテキストがありますか?

4

3 に答える 3

36

ユニークなラベルを使用するだけで安全です。そのため、開始時刻を一意に識別するためにラベルを使用します。

誤ってラベルを2回使用しない限り、すべてが意図したとおりに機能します。nodeまた、通常は実行スレッドが1つしかないことにも注意してください。

于 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 に答える