Verwenden Sie Date() nicht. Lesen Sie unten.
Utilisez performance.now()
:
<script>
var a = performance.now();
alert('do something...');
var b = performance.now();
alert('It took ' + (b - a) + ' ms.');
</script>
Es funktioniert auf:
-
IE 10 ++
-
FireFox 15 ++
-
Chrom 24 ++
-
Safari 8 ++
-
Oper 15 ++
-
Android 4.4 ++
-
usw. usw.
console.time
kann lebensfähig sein für Sie aber es ist nicht standardisiert § :
Diese Funktion ist nicht standardisiert und befindet sich nicht auf dem Weg zu einer Norm. Verwenden Sie sie nicht auf Produktionsseiten, die dem Web zugewandt sind: Sie wird nicht für jeden Benutzer funktionieren. Hier kann es auch große Inkompatibilitäten zwischen Implementierungen geben und das Verhalten kann sich in Zukunft ändern.
Neben der Browserunterstützung, performance.now
scheint die potenziell um genauere Zeitangaben zu machen, da es sich offenbar um die Basisversion von console.time
.
<rant> Außerdem, Verwenden Sie NIEMALS Date
para alles weil sie von Änderungen der "Systemzeit" beeinflusst wird. Das heißt, wir wird ungültige Ergebnisse - wie "negative Zeitmessung" - erhalten, wenn der Benutzer keine genaue Systemzeit hat:
Im Oktober 2014 ging meine Systemuhr kaputt und was erraten .... Ich öffnete Gmail und sah 何れも der E-Mails des Tages "gesendet vor 0 Minuten ". Und ich dachte, Gmail würde von Weltklasse-Ingenieuren von Google entwickelt werden.......
(Stellen Sie Ihre Systemuhr auf ein Jahr zurück und gehen Sie zu Gmail, damit wir uns alle kaputtlachen können. Vielleicht haben wir eines Tages ein Halle der Schande für JS Date
.)
Google Spreadsheet's now()
Funktion leidet ebenfalls unter diesem Problem.
Die einzige Zeit, in der Sie Folgendes verwenden werden Date
ist, wenn Sie dem Benutzer zeigen wollen seine Systemuhrzeit. Nicht, wenn Sie die die Zeit oder etwas zu messen.
5 Stimmen
Oftmals kann eine Aussage darüber, was Sie mit der Ausführungszeit erreichen wollen, weitaus nützlicher sein als die Beantwortung der Frage allein. Heutzutage ist die Verwendung von Profiling in Firebug oder Chrome Dev-Tools oft ein viel besserer Weg, um den Code zu finden, der Ihren CPU-Saft aufsaugt.
16 Stimmen
performance.now()
funktioniert nicht in Node.new Date().getTime()
wird in Node funktionieren.2 Stimmen
@RyanWalker oder noch einfacher
Date.now()
Es funktioniert auch in Knoten2 Stimmen
@oligofren - Manchmal möchten Sie diese Daten vielleicht erfassen. Ich habe eine Situation, in der ich dies in indexedDB schreibe
1 Stimmen
Ich habe mich gefragt, gibt es ein aktuelles Dokument (z. B. in 2020/201), das besagt, dass performance.now() besser ist als Date.now() in Node?
0 Stimmen
Für eine Einzeiler die für Funktionen verwendet werden können, damit sie ihre Ausführungszeit jedes Mal protokollieren, wenn sie ausgeführt werden, sehen Sie sich auch die folgende Antwort an stackoverflow.com/a/52286301/3577695 . Sie kapselt die Zeitsteuerungslogik in einem Dekorator, um sie bei Bedarf für Funktionen zu verwenden