web-dev-qa-db-ja.com

node.jsでwindow.performance.now()と同等ですか?

質問は簡単だと思います。

Nodejs V8エンジンのwindow.performance.now()に似たものを探しています。

今私はちょうど使用しています:

var now = Date.now();
//do some processing..
console.log("time elapsed:", Date.now() - now);

しかし、window-performance.now()は、定義されている here のために、日付を使用するよりもはるかに正確であると読みました。

53
shriek

ブラウザーでタイミングAPIを優先するために作成者が指定する3つの理由は、ノードの状況に直接適用されるとは思えないだけです。そして、特に最近のラウンドですべてのエンジンが "HTML5"アプリをサポートするために行ったパフォーマンスの改善を考えると、Javascriptのパフォーマンスの詳細に関して古い資料に依存することを強く警告します。

ただし、質問への回答では、 process.hrtime() を確認する必要があります

更新: present パッケージ(npm install present)必要に応じてhrtimeの周りに砂糖を提供します。

39
barry-johnson

Node v8.5.0に Performance Timing API が追加されました。これには performance#now() が含まれます。

const {
  performance
} = require('perf_hooks');

console.log('performance', performance.now());
58
Gajus

マイクロ秒ではなくミリ秒を返す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」のようなものを出力します

28
jaggedsoft

どう?

console.time('FooTimer');
// do the work
console.timeEnd('FooTimer');
14
tenbits

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());
2
Erik Barke

要約すると、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());
0
loretoparisi