Performance API

This article needs a technical review. How you can help.

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.

DOMHighResTimeStamp

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 a the value as a time in milliseconds accurate to a millisecond.

Methods

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.

Properties

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.

Implementation status

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.

See Also

Document Tags and Contributors

 Contributors to this page: jpmedley, rolfedh, AFBarstow
 Last updated by: jpmedley,