Der Timer mit hoher Auflösung wurde von der WebPerf Working Group hinzugefügt, um Messungen auf der Webplattform genauer zu machen als mit +new Date
und dem neueren Date.now()
.
Zum Vergleich: Hier sind die Arten von Werten, die Sie zurückerhalten würden:
Date.now() // 1337376068250
performance.now() // 20303.427000007
Wie Sie sehen, unterscheiden sich die beiden Werte um viele Größenordnungen. performance.now()
ist eine Messung in Gleitkomma-Millisekunden seit Beginn des Ladevorgangs der jeweiligen Seite (genauer gesagt des Zeitstempels performance.timing.[navigationStart](https://www.w3.org/TR/navigation-timing/#dom-performancetiming-navigationstart)
). Man könnte argumentieren, dass es sich um die Anzahl der Millisekunden seit der Unix-Epoche handeln könnte, aber selten muss eine Webanwendung die Zeitspanne zwischen heute und 1970 kennen. Diese Zahl bleibt relativ zur Seite, da Sie zwei oder mehr Messwerte miteinander vergleichen.
Monotone Zeit
Ein weiterer Vorteil ist, dass Sie sich darauf verlassen können, dass die Zeit monoton ist. Lassen Sie uns das von WebKit-Entwickler Tony Gentilcore erklären:
Anwendungsfälle
Es gibt einige Situationen, in denen Sie diesen Timer mit hoher Auflösung verwenden sollten, anstatt einen einfachen Zeitstempel zu erfassen:
- Benchmarking
- Code für den Runloop von Spielen oder Animationen
- Framerate mit hoher Genauigkeit berechnen
- Aktionen oder Audioinhalte zu bestimmten Punkten in einer Animation oder einer anderen zeitbasierten Sequenz auslösen
Verfügbarkeit
Der Timer mit hoher Auflösung ist derzeit in Chrome (stabil) als window.performance.webkitNow()
verfügbar. Dieser Wert entspricht in der Regel dem neuen Argumentwert, der an den requestAnimationFrame-Callback übergeben wird. WebKit wird bald sein Präfix verlieren und über performance.now()
verfügbar sein. Insbesondere die WebPerfWG unter der Leitung von Jatinder Mann von Microsoft hat ihre Funktionen sehr schnell ohne Präfix veröffentlicht.
Zusammenfassung: performance.now()
ist…
- ein Double mit Mikrosekunden im Bruchteil
- relativ zum
navigationStart
der Seite und nicht zur Unix-Epoche - nicht verfälscht werden, wenn sich die Systemzeit ändert
- Verfügbar in der stabilen Chrome-Version, Firefox 15 und höher sowie IE10.