Подтвердить что ты не робот

Window.performance.now() эквивалентен в nodejs?

Я думаю, что вопрос прямолинейный.

Я ищу что-то похожее на window.performance.now() в узле v8 engine.sysjs.

Сейчас я просто использую: -

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

Но я читал, что window.performance.now() намного точнее, чем использование даты из-за того, что определено здесь.

4b9b3361

Ответ 1

Я хотел бы только упомянуть, что три из причин, по которым автор приводит предпочтение API синхронизации в браузере, похоже, не относятся непосредственно к ситуации с узлами, а четвертая, неточность времени Javscript, цитирует статью 2008 года: и я бы настоятельно рекомендовал не полагаться на более старые материалы, касающиеся специфики производительности Javascript, особенно с учетом недавнего раунда улучшений производительности, которые были сделаны всеми механизмами для поддержки приложений "HTML5".

Однако, в ответ на ваш вопрос, вы должны посмотреть на process.hrtime()

ОБНОВЛЕНИЕ: present пакет (доступный через npm install present) предоставляет немного сахара около hrtime если хотите.

Ответ 3

Вот ярлык для 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"

Ответ 4

Как насчет?

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

Ответ 5

Здесь версия Typescript с process.hrtime() на основе NextLocal ответ:

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

Ответ 6

Подводя итог и избегая использования 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());