質問は簡単だと思います。
Nodejs V8エンジンのwindow.performance.now()に似たものを探しています。
今私はちょうど使用しています:
var now = Date.now();
//do some processing..
console.log("time elapsed:", Date.now() - now);
しかし、window-performance.now()は、定義されている here のために、日付を使用するよりもはるかに正確であると読みました。
ブラウザーでタイミングAPIを優先するために作成者が指定する3つの理由は、ノードの状況に直接適用されるとは思えないだけです。そして、特に最近のラウンドですべてのエンジンが "HTML5"アプリをサポートするために行ったパフォーマンスの改善を考えると、Javascriptのパフォーマンスの詳細に関して古い資料に依存することを強く警告します。
ただし、質問への回答では、 process.hrtime()
を確認する必要があります
更新: present
パッケージ(npm install present
)必要に応じてhrtime
の周りに砂糖を提供します。
Node v8.5.0に Performance Timing API が追加されました。これには performance#now()
が含まれます。
const {
performance
} = require('perf_hooks');
console.log('performance', performance.now());
マイクロ秒ではなくミリ秒を返すprocess.hrtime()
のショートカットを次に示します。
function clock(start) {
if ( !start ) return process.hrtime();
var end = process.hrtime(start);
return Math.round((end[0]*1000) + (end[1]/1000000));
}
使用法:
var start = clock();
// do some processing that takes time
var duration = clock(start);
console.log("Took "+duration+"ms");
「Took 200ms」のようなものを出力します
どう?
console.time('FooTimer');
// do the work
console.timeEnd('FooTimer');
process.hrtime() のTypeScriptバージョンは、 NextLocal's の回答に基づいています。
class Benchmark {
private start = process.hrtime();
public elapsed(): number {
const end = process.hrtime(this.start);
return Math.round((end[0] * 1000) + (end[1] / 1000000));
}
}
export = Benchmark;
使用法:
import Benchmark = require("./benchmark");
const benchmark = new Benchmark();
console.log(benchmark.elapsed());
要約すると、perf_hooks
の使用を避けるには
const performance = {
now: function(start) {
if ( !start ) return process.hrtime();
var end = process.hrtime(start);
return Math.round((end[0]*1000) + (end[1]/1000000));
}
}
console.log('performance', performance.now());