Performance API

高时间采样率标准定义了Performance接口,该接口支持应用程序中客户端的延时测量。Performance接口被认为是高采样率的,因为其精确度可达千分之一毫秒(受硬件或软件限制)。这些接口支持许多使用情形,包括计算帧速率(在动画中可能很重要)和基准测试(例如加载资源的时间)。

由于平台的系统时钟会受到各种时滞(例如 NTP 调整)的影响,该接口支持单调时钟,即一直增加的时钟。鉴于这个原因,Performance API 定义了DOMHighResTimeStamp类型,而不是使用Date.now()接口。

DOMHighResTimeStamp

DOMHighResTimeStamp类型,顾名思义,表示高采样率的时间戳。此类型是 double ,由性能接口使用。该值可以是离散时间戳,也可以是两个离散时间戳之间的时间间隔。

DOMHighResTimeStamp 的单位是毫秒,应精确到 5 µs(微秒)。但是,如果浏览器无法提供精确到 5 微秒的时间数值(例如由于硬件或软件限制),则浏览器可以将该值表示为精确到毫秒的时间(以毫秒为单位)。

方法

Performance 接口具有两个方法。

now() 方法返回一个DOMHighResTimeStamp,其值取决于navigation start和作用域。如果作用域是 window,则值是创建浏览器上下文的时间;如果作用域是worker,则值是创建 worker 的时间。

toJSON()方法返回Performance对象的序列化结果,包含可以被序列化的属性。

属性

Performance接口具有两个属性。

timing属性返回一个PerformanceTiming对象,其中包含与延时相关的性能信息,例如导航开始的时间,重定向的开始时间和结束时间,响应的开始时间和结束时间等。

navigation 属性返回一个PerformanceNavigation对象,该对象表示在给定浏览上下文中发生的导航类型,例如从历史记录导航到的页面,通过跟随链接导航到的页面等。

接口

Performance

提供方法和属性,包含给定页面与计时相关的性能信息。

PerformanceEntry

提供方法和属性,将单个性能指标封装为性能时间轴的一部分。

PerformanceFrameTiming

提供方法和属性,包含有关浏览器事件循环的帧计时数据。

PerformanceMark (en-US)

条目类型为"mark"的PerformanceEntry抽象接口,该类型的条目通过调用mark()将命名的DOMHighResTimeStamp(mark)添加到浏览器的性能时间轴来创建。

PerformanceMeasure (en-US)

条目类型为"measure"的PerformanceEntry抽象接口,该类型的条目通过调用measure()在浏览器的性能时间轴的两个标记之间添加一个命名的DOMHighResTimeStamp(measure)来创建。

PerformanceNavigationTiming

提供方法和属性,用于存储和检索有关浏览器文档导航事件的高采样率时间戳或其他指标。

PerformanceObserver

提供方法和属性,用于观察性能测量事件,并在浏览器的性能时间轴中记录新的PerformanceEntry时进行通知。

PerformanceResourceTiming

提供方法和属性,用于检索和分析有关应用程序资源加载的详细网络计时数据。

规范

Specification
High Resolution Time
Navigation Timing Level 2
Performance Timeline
Resource Timing Level 2
User Timing

实施状态

As shown in the Performance interface's Browser Compatibility table, most of these interfaces are broadly implemented by desktop browsers.

Performance接口的“浏览器兼容性”表所示,大部分接口由桌面浏览器广泛实现。

要测试你的浏览器对Performance接口的支持,请运行 perf-api-support 应用。

另见