The High Resolution Time standard defines a Performance
interface that supports client-side latency measurements within applications. The Performance
interfaces are considered high resolution because they are accurate to a thousandth of a millisecond (subject to hardware or software constraints). The interfaces support a number of use cases including calculating frame-rates (potentially important in animations) and benchmarking (such as the time to load a resource).
Since a platform's system clock is subject to various skews (such as NTP adjustments), the interfaces support a monotonic clock i.e. a clock that is always increasing. As such, the Performance
API defines a DOMHighResTimeStamp
type rather than using the Date.now()
interface.
The DOMHighResTimeStamp
type, as its name implies, represents a high resolution point in time. This type is a double
and is used by the performance interfaces. The value could be a discrete point in time or the difference in time between two discrete points in time.
The unit of DOMHighResTimeStamp
is milliseconds and should be accurate to 5 µs (microseconds). However, If the browser is unable to provide a time value accurate to 5 microseconds (because, for example, due to hardware or software constraints), the browser can represent the value as a time in milliseconds accurate to a millisecond.
The Performance
interface has two methods. The now()
method returns a DOMHighResTimeStamp
whose value that depends on the navigation start
and scope. If the scope is a window, the value is the time the browser context was created and if the scope is a worker
, the value is the time the worker was created.
The toJSON()
method returns a serialization of the Performance
object, for those attributes that can be serialized.
The Performance
interface has two properties. The timing
property returns a PerformanceTiming
object containing latency-related performance information such as the start of navigation time, start and end times for redirects, start and end times for responses, etc.
The navigation
property returns a PerformanceNavigation
object representing the type of navigation that occurs in the given browsing context, such as the page was navigated to from history, the page was navigated to by following a link, etc.
As shown in the Performance
interface's Browser Compatibility table, most of these interfaces are broadly implemented by desktop browsers.
To test your browser's support for the Performance
interface, run the perf-api-support
application.