自定义时间测量 API
**User Timing**接口允许开发者在浏览器性能时间线中创建针对特定应用的 时间戳。有两种自定义时间测量事件类型:"mark" 事件类型和"measure" 事件类型。
mark 事件可以指定任意的名字并且可以在放在应用的任何位置,measure 事件也可以指定为任意的名字,但是需要放在两个 mark 之间,所以它实际上是两个 mark 的中间点。
此文档提供了对 mark 和 measure 性能事件类型的概览,包括四个拓展了 Performance 接口的 User Timing 方法。
性能标记
创建一个性能标记
performance.mark()方法被用来创建一个性能标记。这个方法需要一个参数,标记的名称(例如performance.mark("mark-1"))。
标记的性能入口包含以下属性值:
检索一个性能标记
Performance接口有三个方法可以用来检索标记:
performance.getEntries()performance.getEntriesByType(entryType)-
返回性能事件线上具有指定
entryType的性能条目,通过将entryType设置为"mark"来获取所有标记条目。 performance.getEntriesByName(name, entryType)-
返回性能时间线上具有指定
name和entryType的性能条目。将entryType设置为"mark"来获得所有的标记条目(通过指定name来检索更具体的条目)。
移除性能标记
想要从性能事件线上移除一个特定标记,调用performance.clearMarks(name),name是想要移除的标记的名称。如果这个方法被调用时没有传入任何参数,那么性能时间线上所有标记类型的条目都会被移除。
性能测量
**measure**事件同样由程序指定名称,但是它被放在两个标记之间因此实际上是两个标记间的中间点。
创建一个性能测量
测量通过调用performance.measure(measureName, startMarkName, endMarkName)来创建,measureName指定了该测量的名称,startMarkName和endMarkName分别指定了性能时间线上该测量前后的两个标记的名称。
测量性能条目包含以下属性值:
检索性能测量
Performance接口有三个方法可以检索一个测量:
performance.getEntries()performance.getEntriesByType(entryType)-
返回性能事件线上指定
entryType的性能条目,通过将entryType设置为"measure"来获取所有的测量条目。 performance.getEntriesByName(name, entryType)-
返回性能时间线上具有指定
name和entryType的性能项目,将entryType设置为"measure"来获取所有测量条目(通过指定name参数来检索更具体的条目)。
移除性能测量
想要从性能时间线上移除一个测量,调用performance.clearMeasures(name),name 是要移除的测量的名称。如果该方法被调用时没有传入任何参数,那么性能时间线上所有的测量都会被移除。
互操作性
如Performance接口的浏览器兼容性表所示,User Timing 方法被大多数桌面和移动浏览器(唯一的例外是桌面 Safari 和移动版 Safari,Safari Technology Preview 24 已经支持该方法)。
想要测试你的浏览器是否支持该 API,运行perf-api-support程序。
相关内容
- User Timing Standard; W3C Editor's Draft
- CanIUse data
- A Primer for Web Performance Timing APIs; Xiaoqian Wu; W3C Editor's Draft