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

javascript node.js navigation-timing-api

27894 просмотра

6 ответа

Я думаю, что вопрос прямо вперед.

Я ищу что-то похожее на window.performance.now () в движке nodejs V8.

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

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

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

Автор: shriek Источник Размещён: 12.11.2019 09:12

Ответы (6)


39 плюса

Решение

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

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

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

Автор: barry-johnson Размещён: 11.04.2014 04:33

60 плюса

Узел v8.5.0 добавил API синхронизации времени , который включает performance#now(), например,

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

console.log('performance', performance.now());
Автор: Gajus Размещён: 30.09.2017 12:43

29 плюса

Вот сокращение, 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");

Будет выводить что-то вроде "Взял 200мс"

Автор: jaggedsoft Размещён: 24.01.2016 12:02

14 плюса

Что о?

console.time('FooTimer');
// do the work
console.timeEnd('FooTimer');
Автор: tenbits Размещён: 27.07.2015 01:51

2 плюса

Вот версия 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());
Автор: Erik Barke Размещён: 15.02.2017 06:02

1 плюс

Подводя итог и избегая использования 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());
Автор: loretoparisi Размещён: 17.04.2019 07:13
Вопросы из категории :
32x32