Es gibt viele Möglichkeiten, Zeitstempel in Nodejs zu erhalten, wie z. B.:
1. Neues Datum (). GetTime ()
2. Datum.Now ()
3. Process.Uptime ()
4. process.hrime ()
Wenn Sie einen Zeitstempel erhalten möchten, können Sie diese Methoden verwenden. Was ist der Unterschied zwischen diesen Methoden?
Neues Datum (). GetTime () und Datum.Now ()
Diese Methoden erfolgen durch die Anzahl der Millisekunden der Systemausführung im Knoten. Die Auswirkung von +New Date () Schreibmethode ist die gleiche wie die von New Date (). GetTime () .
In Szenarien, in denen häufig Zeitstempel verwendet werden, müssen Sie auf die Leistung der Methode achten. Unter diesen Methoden hat Datum.Now () die beste Leistung. Sie können es mit einem kleinen Code testen:
var t1 = neues Datum (). GetTime (); var t2 = t1; var i = 0, count = 10000000, Interval = 0; für (i = 0; i <count; i ++) {t2 = neues Datum (). GetTime (); Interval = (t2 - t1);} intervall = (t2 - t1); console.log ('【neues Datum (). GetTime ()】 Intervall:', Intervall); T1 = neues Datum (). Interval = (t2 - t1);} intervall = (t2 - t1); console.log ('【+neues Datum】 Intervall:', Intervall); t1 = neues Datum (). Interval = (t2 - t1);} intervall = (t2 - t1); console.log ('【Datum.Now ()】 Intervall:', Intervall);Ausgangsergebnis:
【Neues Datum (). GetTime ()】 Intervall: 1583
【+Neues Datum】 Intervall: 2189
【Datum.Now ()】 Intervall: 891
Wenn Sie nur den Zeitstempel erhalten, ist es der beste Weg, dies zu tun. Wenn Sie den Zeitunterschied berechnen möchten, haben diese Methoden einige Probleme: Manchmal gibt es geringfügige Rückrufe in der Systemzeit der Laufumgebung, sodass der erhaltene Zeitunterschied in entsprichter und manchmal ausgelöst werden.
process.hrtime ()
Diese Methode soll ein genaues Zeitstempelobjekt basieren, der auf einem vergangenen Zeitpunkt und der Zeit von der Gegenwart basiert: [Sekunden, Nanosekunden]
> process.hrtime () [3197146, 563552237]
Diese Methode hat nichts mit der Systemzeit zu tun, daher wird sie nicht von der Systemtakt -Drift beeinflusst, und es gibt keine Fehler, wenn es zur Berechnung des Zeitunterschieds verwendet wird.
Aber alles ist immer da - - -
Was ist, wenn es an einem Ort verwendet wird, an dem es häufig aufgerufen wird?
var t1 = neues Datum (). GetTime (); var t2 = t1; var i = 0, count = 10000000, Interval = 0; var hrtime1 = process.hrtime (); var hrtime2 = hrtime1; t1 = new Date (). Date (). GetTime (); Interal = ParseInt (hrtime2 [0] * 1E3 + hrtime2 [1] * 1E -6); console.log ('【hrtime】 Intervall:', Intervall, T2 - T1); 【hrTime】interval: 6412 6413 Wenn Sie sich richtig erinnern, ist die gleiche Anzahl von Kreationen, das Datum. Now () oben ist ungefähr 900 ms!
process.hrtime () ist zu langsam! ! !
Es stellt sich heraus, dass die Berechnung relativ kompliziert ist, wenn NodeJS die Zeit mit hoher Präzisionszeit übernimmt, eine Menge Systemressourcen einnimmt und eine langsame Geschwindigkeit hat, sodass diese Methode nicht für hochfrequente Anwendungen geeignet ist. Bitte beachten Sie Process.uptime () unten
process.uptime ()
Diese Funktion verwendet NodeJS Startup -Laufzeit, um einen zweiten Zeitstempel zu erhalten, der auf Millisekunden genau ist:
process.Uptime
Eingabe: 6.419
Diese Funktion basiert auf der Startzeit der Knoten und wird nicht von der Systemtakt -Drift beeinflusst und ist für die Berechnung der Zeitdifferenz geeignet.
Wie ist die Leistung mehrerer Anrufe?
var t1 = neues Datum (). GetTime (); var t2 = t1; var i = 0, count = 10000000, intervall = 0; t1 = prozess.uptime ()*1000; für (i = 0; i <count; i ++) {t2 = prozess.uptime ()*1000; // intervall = (t2 - t1);} intervall = (t2 - t1); console.log ('【prozess.uptime ()】 Intervall:', Intervall);Ausgabe: [process.uptime ()] Intervall: 954
Im Vergleich zu Process.Hrtime () schafft es viel Leistung ~
Zählen Sie nicht so genau, dass es schnell ist!
Dann müssen Sie den Zeitunterschied bei hoher Frequenz berechnen!
Bei dem obigen dreht sich alles darum, dass NodeJs den Unterschied zwischen dem Zeitstempel und der Zeit erhalten. Ich hoffe, es wird für alle hilfreich sein, wenn sie NodeJS verwenden.