Hay muchas maneras de obtener marcas de tiempo en NodeJS, como:
1. Nueva fecha (). GetTime ()
2. Fecha.now ()
3. Process.uptime ()
4. Process.hrtime ()
Si desea obtener una marca de tiempo, puede usar estos métodos. Entonces, ¿cuál es la diferencia entre estos métodos?
nueva fecha (). getTime () y date.now ()
Estos métodos son a través del número de milisegundos del entorno que ejecuta el sistema en el nodo. El efecto del método de escritura +nuevo date () es el mismo que el efecto de la nueva fecha (). GetTime () .
En escenarios en los que las marcas de tiempo se usan con frecuencia, debe prestar atención al rendimiento del método. Entre estos métodos, date.now () tiene el mejor rendimiento. Puede probarlo con un pequeño código:
var t1 = new Date (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; for (i = 0; i <count; i ++) {t2 = new Date (). gettime (); interval = (t2 - t1);} interval = (t2 - t1); console.log ('【nueva fecha (). gettime ()】 intervalo:', intervalo); t1 = new date (). gettime (); for (i = 0; i <count; i ++) {t2 =+nueva fecha; interval = (t2 - t1);} interval = (t2 - t1); console.log ('【+nueva fecha】 intervalo:', intervalo); t1 = new date (). gettime (); for (i = 0; i <count; i ++) {t2 = date.now (); intervalo = (t2 - t1);} interval = (t2 - t1); console.log ('【date.now ()】 intervalo:', intervalo);Resultado de salida:
【Nueva fecha (). GetTime ()】 Intervalo: 1583
【+Nueva fecha】 Intervalo: 2189
【Fecha.now ()】 Intervalo: 891
Si solo obtiene la marca de tiempo, entonces usar date.now () es la mejor manera de hacerlo, pero si desea calcular la diferencia de tiempo, estos métodos tendrán algunos problemas: a veces habrá devoluciones de llamada ligeras en el tiempo del sistema del entorno de ejecución, por lo que la diferencia de tiempo obtenida es inexacta y, a veces, algunos errores se activarán.
Process.hrtime ()
Este método es obtener un objeto de marca de tiempo exacta basado en cualquier punto de tiempo pasado tomado y el tiempo desde el presente: [segundos, nanosegundos]
> Process.hrtime () [3197146, 563552237]
Este método no tiene nada que ver con el tiempo del sistema, por lo que no se verá afectado por la deriva del reloj del sistema, y no habrá errores cuando se use para calcular la diferencia de tiempo.
Pero, todo siempre está ahí - -
¿Qué pasa si se usa en un lugar donde se llama con frecuencia?
var t1 = new Date (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; var hrtime1 = process.hrtime (); var hrtime2 = hrtime1; t1 = new date (). gettime (); para (i = 0; i <count; i ++) {hrtime2 = process.hrtime (hrtime1);};} Date (). Gettime (); interval = parseInt (hrtime2 [0] * 1e3 + hrtime2 [1] * 1e -6); console.log ('【hrtime】 intervalo:', intervalo, t2 - t1); 【hrTime】interval: 6412 6413 Si recuerda correctamente, el mismo número de creaciones, la fecha.now () anterior es de aproximadamente 900 ms!
¡Process.hrtime () es demasiado lento! ! !
Resulta que cuando NodeJS maneja el tiempo de alta precisión, el cálculo es relativamente complicado, ocupa muchos recursos del sistema y tiene una velocidad lenta, por lo que este método no es adecuado para aplicaciones de alta frecuencia. Consulte Process.uptime () a continuación
Process.uptime ()
Esta función utiliza el tiempo de ejecución de inicio de NodeJS para obtener una segunda marca de tiempo, que es precisa para milisegundos:
proceso.
Entrada: 6.419
Esta función se basa en el tiempo de inicio del nodo y no se verá afectada por la deriva del reloj del sistema, y es adecuada para calcular la diferencia de tiempo.
Entonces, ¿cómo es el rendimiento de múltiples llamadas?
var t1 = new Date (). getTime (); var t2 = t1; var i = 0, count = 10000000, interval = 0; t1 = process.upTime ()*1000; para (i = 0; i <count; i ++) {t2 = process.uptime ()*1000; // intervalo = (t2 - t1);} interval = (t2 - t1); console.log ('【process.upTime ()】 intervalo:', intervalo);Salida: [Process.uptime ()] Intervalo: 954
En comparación con Process.hrtime (), crea mucho rendimiento ~
¡No cuentes con tanta precisión, es rápido!
¡Entonces debe calcular la diferencia de tiempo a alta frecuencia!
Lo anterior se trata de que Nodejs obtenga la diferencia entre la marca de tiempo y el tiempo. Espero que sea útil para todos cuando usen NodeJs.