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
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.
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.
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.
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.