获取当前小程序性能相关的信息。
基础库 1.48.0 开始支持
暂不支持小程序插件\小程序开发者工具调试
QQ mac版本:暂不支持
QQ windows版本:暂不支持
const performance = qq.getPerformance(); // ==> Performance对象
// 在onReady及之后的生命周期,可以尝试直接获取已产生的性能数据
console.log(performance.getEntries());
// 也可通过监听的方式,持续获取产生的性能数据
performance
.createObserver((entryList) => {
console.log(entryList.getEntries());
})
.observe({ entryTypes: ["render", "script", "navigation"] });
Performance 对象,用于获取性能数据及创建性能监听器
// 创建全局性能事件监听器
Performance.createObserver(function(EntryList){}) ==> PerformanceObserver
// 该方法返回当前缓冲区中的所有性能数据
Performance.getEntries() ==> Array.<PerformanceEntry>
// 获取当前缓冲区中所有名称为 [name] 且类型为 [entryType] 的性能数据
Performance.getEntriesByName(string name, string entryType) ==> Array.<PerformanceEntry>
// 获取当前缓冲区中所有类型为 [entryType] 的性能数据
Performance.getEntriesByType(string entryType) ==> Array.<PerformanceEntry>
// 设置缓冲区大小,默认缓冲 30 条性能数据
Performance.setBufferSize(number size) ==> void
PerformanceObserver 对象,用于监听性能相关事件
// 开始监听
PerformanceObserver.observe(entryTypes);
// 停止监听
PerformanceObserver.disconnect();
// 获取当前支持的所有性能指标类型
PerformanceObserver.supportedEntryTypes ==> Array
EntryList 对象
// 该方法返回当前列表中的所有性能数据
EntryList.getEntries() ==> Array.<PerformanceEntry>
// 获取当前列表中所有名称为 [name] 且类型为 [entryType] 的性能数据
EntryList.getEntriesByName(string name, string entryType) ==> Array.<PerformanceEntry>
// 获取当前列表中所有类型为 [entryType] 的性能数据
EntryList.getEntriesByType(string entryType) ==> Array.<PerformanceEntry>
单条性能数据。
属性 | 类型 | 说明 |
---|---|---|
name | string | 指标名称 |
entryType | string | 指标类型 |
startTime | number | 开始时间,不同指标的具体含义会有差异。 |
duration | number | 耗时 ms。仅对于表示阶段的指标有效。 |
path | string | 页面路径。仅 render 和 navigation 类型指标有效。 |
navigationStart | number | 路由真正响应开始时间。仅 navigation 类型指标有效。 |
navigationType | string | 路由详细类型,与小程序路由方法对应。仅 navigation 类型指标有效。 |
属性 | 说明 |
---|---|
navigation | 路由 |
render | 渲染 |
script | 脚本 |
属性 | 说明 |
---|---|
appLaunch | 小程序启动耗时。(entryType: navigation) |
route | 路由处理耗时。(entryType: navigation) |
firstRender | 页面首次渲染耗时。(entryType: render) |
firstPaint | 页面首次绘制(FP)时间点,无 duration。(iOS 不支持)(entryType: render) |
firstContentfulPaint | 页面首次内容绘制(FCP)时间点,无 duration。(iOS 14.5 以下版本不支持)(entryType: render) |
largestContentfulPaint | 页面最大内容绘制(LCP)时间点,无 duration。(iOS 不支持)(entryType: render) |
evaluateScript | 逻辑层 JS 代码注入耗时。(entryType: script) |
FP、FCP、LCP 只是一个时间点,而非一个时间段,无 duration
在获取到数据后,开发者可以自行上报、分析。
对于同一个小程序,以下因素会直接影响大盘平均启动耗时:
此外,下列情况也会间接影响启动耗时: