threads now node javascript node.js navigation-timing-api

javascript - threads - performance now node



window.performance.now() equivalente en nodejs? (5)

Creo que la pregunta es directa.

Estoy buscando algo similar a window.performance.now () en el motor nodejs V8.

En este momento solo estoy usando:

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

Pero, leí que window.performance.now () es mucho más preciso que usar la fecha debido a lo que here define.


¿Qué pasa?

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


Aquí hay un atajo para process.hrtime() que devuelve milisegundos en lugar de microsegundos:

function clock(start) { if ( !start ) return process.hrtime(); var end = process.hrtime(start); return Math.round((end[0]*1000) + (end[1]/1000000)); }

Uso:

var start = clock(); // do some processing that takes time var duration = clock(start); console.log("Took "+duration+"ms");

Producirá algo así como "Llevó 200 ms"


Aquí hay una versión de Typescript con process.hrtime() , basada en NextLocal''s respuesta 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;

Uso:

import Benchmark = require("./benchmark"); const benchmark = new Benchmark(); console.log(benchmark.elapsed());


El nodo v8.5.0 ha agregado Performance Timing API , que incluye el performance#now() , por ejemplo

const { performance } = require(''perf_hooks''); console.log(''performance'', performance.now());


Solo mencionaría que tres de las razones que da el autor para la preferencia de la API de tiempo en el navegador no parecen aplicarse directamente a una situación de nodo, y el cuarto, la inexactitud del tiempo de Javscript, cita un artículo de 2008, y yo recomendaría encarecidamente no confiar en material más antiguo sobre aspectos específicos del rendimiento de Javascript, especialmente teniendo en cuenta la reciente ronda de mejoras de rendimiento que todos los motores han hecho para soportar aplicaciones "HTML5".

Sin embargo, en respuesta a su pregunta, debe ver process.hrtime()

ACTUALIZACIÓN: El present paquete (disponible a través de npm install present ) proporciona algo de azúcar en el tiempo de hrtime si así lo desea.