Performance
===========

The **`Performance`** interface provides access to performance-related information for the current page.

An object of this type can be obtained by calling `window.performance` or `self.performance` in workers. Note that Performance entries are per context. If you create a mark on the main thread (or other worker), you cannot see it in a worker thread, and vice versa. See `self.performance` for which APIs are available in window and worker contexts.

EventTarget

PerformanceInstance properties
-------------------

*The `Performance` interface doesn't inherit any properties.*

`Performance.eventCounts` Read only 

An `EventCounts` map containing the number of events which have been dispatched per event type.

`Performance.navigation` Read only  
Deprecated

A legacy `PerformanceNavigation` object that provides useful context about the operations included in the times listed in `timing`, including whether the page was a load or a refresh, how many redirections occurred, and so forth.

`Performance.timing` Read only  
Deprecated

A legacy `PerformanceTiming` object containing latency-related performance information.

`Performance.memory` Read only  
Non-standard

Deprecated

A *non-standard* extension added in Chrome, this property provides an object with basic memory usage information. *You **should not use** this non-standard API.*

`Performance.timeOrigin` Read only 

Returns the high resolution timestamp of the start time of the performance measurement.

Instance methods
----------------

*The `Performance` interface doesn't inherit any methods.*

`Performance.clearMarks()`

Removes the given *mark* from the browser's performance entry buffer.

`Performance.clearMeasures()`

Removes the given *measure* from the browser's performance entry buffer.

`Performance.clearResourceTimings()`

Removes all `performance entries` with a `entryType` of "`resource`" from the browser's performance data buffer.

`Performance.getEntries()`

Returns a list of `PerformanceEntry` objects based on the given *filter*.

`Performance.getEntriesByName()`

Returns a list of `PerformanceEntry` objects based on the given *name* and *entry type*.

`Performance.getEntriesByType()`

Returns a list of `PerformanceEntry` objects of the given *entry type*.

`Performance.mark()`

Creates a `timestamp` in the browser's *performance entry buffer* with the given name.

`Performance.measure()`

Creates a named `timestamp` in the browser's performance entry buffer between two specified marks (known as the *start mark* and *end mark*, respectively).

`Performance.measureUserAgentSpecificMemory()` 
Experimental

Estimates the memory usage of a web application including all its iframes and workers.

`Performance.now()`

Returns a `DOMHighResTimeStamp` representing the number of milliseconds elapsed since a reference instant.

`Performance.setResourceTimingBufferSize()`

Sets the browser's resource timing buffer size to the specified number of "`resource`" `type` `performance entry` objects.

`Performance.toJSON()`

Returns a JSON representation of the `Performance` object.

Events
------

Listen to these events using `addEventListener()` or by assigning an event listener to the `oneventname` property of this interface.

`resourcetimingbufferfull`

Fired when the browser's resource timing buffer is full.

Specifications
--------------

| Specification |
| --- |
| High Resolution Time # sec-performance |
| Performance Timeline # extensions-to-the-performance-interface |
| Resource Timing # sec-extensions-performance-interface |
| User Timing # extensions-performance-interface |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.