IT박스

window.performance.now () nodejs에서 동등합니까?

itboxs 2021. 1. 10. 16:58
반응형

window.performance.now () nodejs에서 동등합니까?


질문은 간단하다고 생각합니다.

nodejs V8 엔진의 window.performance.now ()와 유사한 것을 찾고 있습니다.

지금은 다음을 사용하고 있습니다.

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

그러나 여기에 정의 된 내용 때문에 window.performance.now ()가 날짜를 사용하는 것보다 훨씬 정확하다는 것을 읽었습니다 .


저자가 브라우저에서 타이밍 API를 선호하는 이유 중 세 가지가 노드 상황에 직접적으로 적용되지 않는 것 같고, 네 번째 인 Javscript 시간의 부정확성은 2008 년의 기사를 인용합니다. 특히 "HTML5"앱을 지원하기 위해 모든 엔진이 수행 한 최근의 성능 개선 사항을 고려할 때 Javascript 성능 특성과 관련하여 이전 자료에 의존하지 않도록 강력히주의 할 것입니다.

그러나 귀하의 질문에 대한 답변으로 process.hrtime()

업데이트 : present패키지 (를 통해 사용 가능 npm install present)는 hrtime원하는 경우 약간의 설탕을 제공 합니다.


노드 v8.5.0 추가 한 성능 타이밍 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');

NextLocal의 답변을 기반으로 process.hrtime () 이있는 Typescript 버전은 다음과 같습니다 .

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());

참조 URL : https://stackoverflow.com/questions/23003252/window-performance-now-equivalent-in-nodejs

반응형