• 开发教程与代码示例
  • 入门
  • 小程序框架
  • 小程序运行时
  • 自定义组件
  • 基础教程
  • 能力教程
  • 性能优化
  • 概述
  • 性能优化辅助平台/工具
  • 性能指标获取方式
  • 线上分析平台
  • 性能分析平台使用说明
  • 性能分说明
  • 线下调试工具
  • 性能优化方法
  • 启动性能
  • 运行时性能
  • 小程序白屏&渲染异常问题优化
  • 安全
  • 产品简介

    性能分析是用于评估和优化小程序性能的工具。帮助开发者监测和分析小程序的性能指标,以优化用户体验和应用性能。包含性能指标的数据看板、性能预警以及分析归因能力。性能指标看板展示小程序的性能状况,协助发现潜在的性能问题。异常预警提供异常指标的错误频率、影响范围、异常归因等信息,帮助快速定位和解决问题,提高小程序的稳定性和可靠性。
    平台地址:「控制台-选择小程序-开发-性能分析」
    作为抖音小程序官方数据平台,我们提供以下两类能力:
    (1)性能报告:提供平台统计数据、BI 数据报表等多项数据分析服务,帮助小程序开发者了解应用性能状态,更高效地发现性能问题,并得到解决方案。
    (2)智能优化:提供性能分或单个指标的静态诊断(正向诊断)、波动归因(劣化归因)结果,部分场景下将直接给出优化建议。
    (3)性能预警:对用户体验产生严重影响的指标提供告警和异常归因能力,帮助开发者及时察觉线上故障,保障小程序的正常使用体验。

    性能报告

    性能概览介绍

    性能概览模块提供最核心性能指标,这些指标能够帮助开发者了解小程序的整体性能状况。提供指标波动情况与同类型小程序的水平参考,指导开发者的优化方向。
    内容概要:指标看板提供小程序 T+1 天级数据、平台上同类目小程序的分位值或平均值作为优化参考目标,当指标值劣于同类目值时,表示该指标急待优化。
    指标卡:展示昨日(T-1)指标值和较(T-2)、 较同类型小程序(T-1)环比,包含启动性能、运行性能和质量监测三个子模块的核心数据。
    全局筛选维度
      版本:支持筛选指定时间区间小程序发布过的所有版本的版本号。
      时间:指标卡仅支持天级筛选,最大支持查询 30 天。
      小程序宿主:小程序的运行平台,可选全部、抖音、抖音火山版、抖音极速版。
      设备类型:设备系统类型,可选全部、Android、iOS。
      设备性能分级:根据抖音平台 benchmark 标准计算,可选全部、高端机、中端机、低端机。
      场景入口:小程序挂载页面来源,可选当前小程序的所有入口。
      启动页面:支持筛选当前小程序线上所有启动页面的路径。
    性能分
    为了让开发者能更立体的感知到自身小程序的性能水平,平台建设性能分作为综合刻画小程序基础体验水平的聚合指标,因此小程序性能分是全面衡量小程序基础体验的综合指标 更多详细说明
    最核心的数据指标主要分为三大类:
    (1)启动性能核心数据:小程序冷启动的相关核心数据,用来描述小程序启动时的用户体验。
    (2)运行性能核心数据:小程序运行时的相关核心数据,用来描述小程序运行时的用户体验,如页面切换及网络是否较慢。
    (3)质量监测核心数据:小程序质量相关核心数据,用来描述小程序的可用性,如白屏、页面元素渲染异常、JSAPI 异常指标及原因分布。
    (4)重点能力核心数据:小程序重点能力的性能及稳定性,用来描述小程序能力的可用性及用户体验。
    模块
    指标名称
    指标口径
    启动性能核心数据
    冷启动耗时
    从场景入口点击冷启动小程序,到进入小程序页面且页面内最大元素渲染完成的耗时,对应指标 LCP(largest contentful paint)
    冷启动打开率
    从场景入口点击冷启动小程序,且页面最大元素渲染完成次数 / 场景入口点击冷启动小程序次数,即 LCP 指标到达占比
    冷启动打开次数
    各场景入口点击冷启动小程序的次数
    冷启动流失人数
    场景入口点击冷启动小程序,在页面最大元素渲染完成(LCP)前主动离开的人数
    首次有意义渲染耗时
    从场景入口点击冷启动小程序进入页面,页面第一个有意义元素渲染完成耗时(开发者调用 tt.performance.mark 上报的 FMP)
    运行性能核心数据
    页面切换耗时
    从触发路由切换到下一级页面,到目标页面最大元素渲染完成的耗时,即次页 LCP
    页面切换较慢占比
    页面切换耗时大于 1200ms,占总页面切换耗时次数的比例
    网络请求耗时
    从触发网络请求,到网络请求结果返回的耗时,包括请求成功和失败场景
    质量监测核心数据
    质量异常影响人数
    质量监测模块中,白屏影响人数+页面元素渲染异常影响人数+JSAPI 调用异常影响人数
    白屏次数
    用户访问小程序内页面时遇到白屏问题的次数
    页面元素渲染异常次数
    页面内元素渲染时因发生 JSError 等异常导致元素无法正常展示的次数
    JSAPI 调用异常次数
    页面内调用 JSAPI 时结果为 fail 的次数
    重点能力核心数据
    视频启播耗时
    从video组件创建到视频首帧渲染完成耗时
    视频未启播率
    (从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数)/video组件创建总次数
    视频未启播次数
    从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数
    播放卡顿率
    视频播放过程中出现卡顿事件的播放次数/视频播放总次数

    数据解析方式

    了解小程序所处水平。
    看板中的每个指标卡提供了与同类型小程序基线的对比,如下图。
    较昨日的增减百分比 = ((T 的值 - T-1 的值) / T-1 的值) * 100
    较同类型的增减百分比 = ((T 的值 - 同类型小程序 T 日较差的值) / 同类型小程序 T 日较差的值) * 100 比如下图红框表示相对于同类型较差的小程序的水平。
    T 表示时间 filter 取值具体某个日期。
    如果小程序劣于同类型值,表示小程序已经处于较差水平,急需优化
    如何看相对优劣程度:
      冷启动耗时:较同类型高时,启动速度慢于大多数同类型小程序,表示急需优化;
      冷启动打开率:较同类型低时,流失人数较多,从点击入口到成功进入小程序的用户比例较低。直接影响用户访问量;
      启动流失人数:较同类型高时,流失人数较多,流失人数 = 冷启动打开次数 * (1-冷启动打开率),可通过优化冷启动打开率减少流失。

    启动性能

    描述小程序的冷启动性能体验以及阶段耗时明细。具体优化步骤请参考《启动性能优化指引》。

    启动性能转化漏斗

    根据小程序启动顺序,将启动流程分为 4 个主要阶段,提供阶段间的耗时指标,以分析可优化点。
    漏斗层级
    说明
    阶段一:打开小程序
    点击打开小程序
    阶段二:框架资源准备完成
    包下载、框架双线程资源(JSC, Webview)运行完成
    阶段三:页面首帧渲染完成
    等于 FP
    阶段四:页面最大元素渲染完成
    等于 LCP 触发
    次数:进入到当前阶段的次数。
    耗时:从上一个阶段到当前阶段的耗时。
    转化:当前阶段完成的次数 / 第一阶段完成的次数。
    漏斗层级
    过程指标
    展示样式
    指标描述
    第一层➡️第二层之间
    代码包下载耗时
    指标卡
    小程序代码包下载耗时
    创建 App 耗时
    指标卡
    小程序 App 创建执行耗时,包含小程序 App.js 代码执行,App.onShow, App.onLaunch 同步生命周期执行耗时
    HTML 和 CSS 加载耗时
    指标卡
    小程序 HTML,CSS 文件加载耗时
    第二层➡️第三层之间
    页面首帧渲染耗时
    指标卡
    页面首次渲染开始到渲染完成的耗时
    启动后立即路由占比
    指标卡
    冷启动后,在启动页面渲染完成前路由到其他页面的次数 / 冷启动次数
    第三层➡️第四层之间
    可视区域外图片加载占比
    指标卡
    在用户可见窗口区域外加载的图片数量 / 所有图片数量
    配置方案预取命中率
    如果小程序没有接数据预取,则此指标卡不出现
    指标卡
    使用数据预取配置方案。一次冷启动中使用缓存的网络请求数量 / 配置数据预取且成功缓存的请求数量。应尽可能提升命中率,命中率较低建议本地测试请求结果,根据使用文档排查未命中原因
    数据预取JS方案命中率
    指标卡
    使用数据预取JS方案。一次冷启动中使用缓存的网络请求数量 / JS中数据预取且成功缓存的请求数量。应尽可能提升命中率,命中率较低建议本地测试请求结果,根据使用文档排查未命中原因
    数据预取JS方案图片命中率
    指标卡
    使用数据预取JS方案。一次冷启动中使用缓存的图片请求数量 / JS中数据预取且成功缓存的图片数量。应尽可能提升命中率,命中率较低建议本地测试请求结果,根据使用文档

    启动性能明细数据

    启动性能明细数据模块内包含以下图表,说明如下:
    图表名称
    说明
    冷启动耗时分布
    展示小程序冷启动在不同耗时时段的启动次数占比和启动次数
    用户冷启动流失耗时分布
    展示小程序冷启动在不同耗时时段的用户流失人数占比和人数
    主要场景冷启动耗时
    展示小程序主要入口场景的冷启动次数占比和冷启动耗时
    主要场景冷启动打开率
    展示小程序主要入口场景的冷启动次数占比和冷启动打开率

    FAQ

    (1)启动性能漏斗数据中,前一个阶段到达率低于后续阶段
    原因:可能存在启动后立即路由。因为启动耗时是指 从启动到第一个LCP到达,如果启动页面 A 后立即 redirectTo 或者 relaunch 页面 B,此时页面 B 触发页面最大元素渲染完成,但因为页面 A 被销毁,导致页面 A 数据未上报或丢失。
    影响面:不影响整体用户体验,但启动后路由直接影响启动耗时,耗时过长有可能导致用户提前离开,建议减少使用。

    运行性能

    提供小程序运行时(如页面切换)相关影响因素明细数据,辅助分析用户在页面切换等过程中的体验,并进行针对性的优化。运行性能优化具体请参考《小程序运行时性能优化》。

    页面切换耗时明细

    提供“指定页面”过滤条件,支持选择指定页面查看页面切换耗时明细,以分析各个跳转路径的性能情况。
    指定页面:路由切换的目标页面。
    来源页面:路由切换的来源页面,如从页面 A 跳转到页面 B,A 为来源页,B 为指定页面。
    指标介绍
    指标名称
    指标口径
    页面切换次数
    触发切换到下一级页面的总次数
    页面切换到达率
    触发切换到下一级页面且页面最大元素渲染完成次数/触发切换到下一级页面的总次数
    页面切换较慢次数
    页面切换耗时大于 1000ms 的次数
    页面切换较慢占比
    页面切换耗时大于 1000ms 的次数/页面切换总次数
    页面切换耗时&页面切换耗时分布图表。
    图表名称
    说明
    页面切换耗时
    展示对应页面 path 的页面切换次数占比和耗时均值
    页面切换耗时分布
    展示页面切换次数和页面切换耗时在各时间段的分布

    网络请求耗时明细数据

    提供小程序网络请求明细数据,以分析网络请求性能及稳定性问题,观测网络请求变化趋势。
    “请求目标” 包含 2 级选项:
      一级选项包括:「全部」、「tt.request」、「tt.downloadfile」、「tt.uploadfile」。
      二级选项包括:一级选项类型下所有请求的接口地址。
    指标介绍。
    指标名称
    指标口径
    网络请求发起次数
    用户在小程序页面内触发网络请求的次数。近似值,含有抽样拟合逻辑。
    网络请求成功耗时
    从用户在小程序页面内触发网络请求,到网络请求返回结果为 success 的耗时
    网络请求失败次数
    网络可用条件下,用户在小程序页面内触发网络请求,网络请求返回结果为 fail 的次数
    网络请求失败占比
    网络可用条件下,用户在小程序页面内触发网络请求后返回结果为 fail 的次数/用户在小程序页面内触发网络请求的次数。近似值,含有抽样拟合逻辑。
    请求接口流量和耗时图表。
    图表名称
    说明
    请求接口流量和耗时
    展示请求接口的请求次数和耗时(接口个数最多按网络请求次数降序展示前 10 个)

    质量监测

    展示小程序异常情况,提供异常的分布、影响范围、异常归因等信息,帮助开发者了解小程序质量概况,协助快速分析和解决问题,提高小程序的稳定性和可靠性。稳定性性能优化方法请参考《小程序白屏&渲染异常问题优化》。

    页面白屏

    用户在页面停留一定时间(4s)后,以白屏状态离开就认为是白屏。白屏直接影响用户体验,导致用户终止使用小程序,核心指标如下:
    指标名称
    指标口径
    白屏次数
    用户访问小程序内页面时遇到白屏问题的次数
    白屏占比
    用户访问小程序内页面时遇到白屏问题的次数/用户访问小程序内页面总次数
    启动白屏次数
    用户在小程序冷启动进入小程序页面时遇到白屏问题的次数
    启动白屏占比
    用户在小程序冷启动进入小程序页面时遇到白屏问题的次数/用户在小程序冷启动进入落地页次数
    白屏影响人数
    访问小程序内页面时遇到白屏问题的用户数去重
    白屏原因分析 。
      对当前筛选条件下,所有白屏事件的 errcode 进行聚类后,通过饼状图展示每个聚类下的占比。
      点击具体某个 errcode,弹窗展示 errcode 下的 Top5 errmsg 及其占比。
      饼状图最多展示 10 个错误原因。当错误原因>9 个时,按错误原因次数降序排序取前 9 的错误原因进行展示。其余原因统一合并为“其他”。
      对当前筛选条件下,所有白屏事件的 errcode 进行聚类后,通过饼状图展示每个聚类下的占比。
      点击具体某个 errcode,弹窗展示 errcode 下的 Top5 errmsg 及其占比。
      饼状图最多展示 10 个错误原因。当错误原因>9 个时,按错误原因次数降序排序取前 9 的错误原因进行展示。其余原因统一合并为“其他”。

    页面元素渲染异常

    用户在页面停留一定时间(4s)后,离开时页面部分模块为白屏就认为是页面元素渲染异常。核心指标如下:
    指标名称
    指标口径
    页面元素渲染异常次数
    页面内元素渲染时因发生 JSError 等异常导致元素无法正常展示的次数
    页面元素渲染异常占比
    页面内元素渲染时因发生 JSError 等异常导致元素无法正常展示的次数/页面访问次数
    页面元素渲染异常影响人数
    访问小程序内页面时遇到页面元素渲染异常问题的人数去重

    JSAPI 调用异常

    提供小程序在运行过程中调用 JSAPI 结果为 fail 的明细数据。JSAPI 异常可能导致部分功能不可用。
    该模块内支持以下两个筛选。
      指定页面:支持选择指定页面查看页面内发生的 JSAPI 调用异常情况。选项包括小程序下所有的页面 path。
      请求接口:支持选择指定接口查看该接口下发生的 JSAPI 调用异常情况。选项包括小程序下所有调用过的 JSAPI。
    指标说明。
    指标名称
    指标口径
    JSAPI 调用异常次数
    页面内调用 JSAPI 时结果为 fail 的次数
    JSAPI 调用异常占比
    页面内调用 JSAPI 时结果为 fail 的次数 / 页面内调用 JSAPI 的次数
    JSAPI 调用异常影响人数
    访问小程序内页面时遇到 JSAPI 调用异常问题的人数去重

    重点能力性能

    接入重点能力性能指标覆盖更多性能分析场景,提升平台使用体验。目前提供 video性能相关数据,包含:
      video启播性能:描述 video 启播期间的体验
      video运行性能:描述 video 启播后的体验

    video 启播性能

    video 启播性能明细数据

    指标说明
    指标名称
    指标口径
    视频启播耗时
    从video组件创建到 video 首帧渲染完成耗时
    80分位值
    视频未启播率
    (从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数)/video组件创建总次数
    绝对值
    视频未启播次数
    从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数
    绝对值
    视频播放错误次数
    启播期间video播放错误次数
    绝对值
    视频启播期间离开人数
    从video组件创建到首帧渲染完成期间离开页面人数去重
    绝对值
      较7日前:[1-(所选中日期当日T数据/T-7当日数据)]*100%
      较同类型:[1-当前小程序数值/与小程序同属三级类目下的所有小程序下的数值的平均值]*100%

    video 启动性能明细数据

      短剧类型小程序:提供短剧ID 相关分布
      其他小程序:提供 src 相关分布
    图表名称
    数据介绍
    启播耗时分布
    启播次数:即video组件创建次数
    占比:当前耗时区间下的启播次数占比/总启播次数占比
    主要剧集启播耗时/主要资源启播耗时
    启播次数:即video组件创建次数
    耗时:坐标所对应的短剧ID/资源链接所对应的启播耗时。
    主要未启播剧集
    未启播次数:即从video组件创建到首帧渲染完成期间离开页面次数+启播期间video播放错误次数
    占比:坐标所对应的短剧ID/资源链接所对应的未启播次数/全量未启播次数
    视频播放错误原因分析
    对当前筛选条件下,所有视频播放错误事件的errcode进行聚类后,通过饼状图展示每个聚类下的占比。
    点击具体某个errcode,弹窗展示errcode下的Top5 errmsg及其占比。

    video 运行性能

    运行性能概览

    指标名称
    指标口径
    分位值/绝对值
    播放卡顿率
    视频播放过程中出现卡顿事件的播放次数/视频播放总次数
    绝对值
    播放卡顿次数
    视频播放过程中出现卡顿事件(解析下一帧时间大于200ms)
    绝对值
    音画不同步资源占比
    (仅短剧小程序展示)
    经过平台检测存在音画不同步问题的资源数量/总资源数量
    绝对值
    音画不同步资源数量
    (仅短剧小程序展示)
    经过平台检测存在音画不同步问题的资源数量
    绝对值

    video 运行性能明细数据

    图表名称
    数据介绍
    主要播放卡顿剧集
    播放次数:即video组件创建次数
    卡顿率:坐标所对应的短剧ID/资源链接所对应的播放卡顿率。
    播放卡顿原因分析
    对当前筛选条件下,所有播放卡顿错误事件的errcode进行聚类后,通过饼状图展示每个聚类下的占比。
    点击具体某个errcode,弹窗展示errcode下的Top5 errmsg及其占比。
    音画不同步资源列表
    (仅短剧小程序展示)
    以列表形式展示当前小程序下所有音画不同步的剧集信息。

    FAQ

    (1)主要未启播剧集/资源中的 “无效链接” 是什么含义,如何解决?
    无效链接定义为使用空src资源来起播导致的失败。
      未起播定义:
      分子:未收到开始渲染回调,收到onError回调/离开次数
      分母:Video创建后客户端设置/更新视频资源总次数【""空字符也是更新资源】
      业务场景:开发者使用空白字符串or不合法的剧集id来进行播放
      用户视角:黑屏界面,与其他起播失败表现相同

    智能优化

    (1)静态诊断:针对小程序当前性能指标问题,正向分析并提供优化建议。
    (2)波动归因:对比小程序诊断日期与对比日期的指标值,给出相应周期指标的变化,以及导致变化的原因,以协助理解指标变更并进行下一步优化。

    静态诊断

    性能分优化方案

    (1)最快提升至下一档
    方案介绍:适用于想要快速提升性能分档位,快速获取性能分权益等场景。
    指标优化顺序:当前性能分中指标优先档位最低指标,同等档位优先权重高的指标。
    (2)优先优化排名较差指标
    方案介绍:适用于想按照小程序运行模块进行整体优化,提升小程序整体性能表现,优化同行业排名。

    优化建议

    此处会与同类型较优秀的小程序对比,输出指标差异及优化空间。其中不同指标诊断略有差异。具体如下:
      启动耗时:为提供更完整的启动链路问题,此处对比的是冷启动耗时数据,诊断结论中的指标值比性能分中的启动耗时(冷热启)大
      启动打开率:为提供更完整的启动链路问题,此处对比的是冷启动打开率数据,诊断结论中的指标值比性能分中的启动耗时(冷热启)偏小。
      页面切换耗时、页面切换到达率:诊断建议正在建设中,平台暂未提供,可根据指引文档进行优化。
      白屏占比 / 页面渲染异常占比:建议部分给出当前筛选条件下的异常信息,平台仅给出出现白屏时的异常,不确保是直接原因,请开发者结合业务逻辑判断是否会导致白屏进行处理。

    波动归因

    性能分归因中会给出导致性能分变化的 top3 指标。如需进行全指标优化,在优化建议部分进行切换查看。

    诊断建议

    诊断建议部分会给出不同指标的变化原因。其中启动性能部分(启动耗时、启动打开率)与静态诊断类似,也是给出冷启动指标的相对变化,通常来说,冷启动耗时较高,若发生劣化会直接影响整体启动耗时;基于冷启动耗时对比,也能给出能完整链路中的性能问题。
    与静态诊断不同点:此处对比的是当前小程序本身,因此诊断建议也是从小程序本身出发,提供主要的影响维度,比如某版本、宿主影响(如需自行排查,也可使用下述拆维诊断详情)。确认影响维度后,如需正向优化,可在静态诊断中筛选该维度,根据诊断建议进行优化。
    使用后,欢迎提交您的使用建议,我们将持续优化。

    拆维诊断详情

    诊断建议中给出的是影响最大的维度,如需自行排查,也可在此处筛选指定维度查看指标波动

    性能预警

    对严重影响用户体验的指标提供预警能力,让开发者及时感知线上问题并及时止损,提高小程序的稳定性和可靠性。报警提供异常次数、影响范围等信息,协助开发者快速定位和解决问题。支持创建自定义预警规则,如自定义 pv/uv、影响人数、环比波动阈值等,为开发者提供更灵活的小程序性能监控。

    报警历史

    展示小程序在一定时间段内接收到的预警信息,包含预警时间、预警内容、归因信息等。
    预警感知条件:订阅预警规则(性能预警-预警规则-订阅管理),订阅预警规则后才能够接收预警信息。
    预警感知群:如果预警通知方式选择了飞书群,进入告警群后可在飞书群中接收预警信息。

    预警规则

    提供以下 2 类预警规则,开启订阅后,当指标满足预警条件时会自动触发预警。
    (1)默认规则:由平台根据小程序治理策略默认设定,无需重新配置预警规则。我们会在快触及平台治理底线时进行预警。为保证预警的消费必要性,我们优化了预警的频次和阈值,减少不必要的预警产生。
    (2)自定义规则:支持开发者创建自定义预警规则,可以针对给定指标自定义预警前提,设置更符合需求场景的预警。自定义预警与默认预警触发逻辑不冲突,如果同时满足且订阅两类预警条件,会接收到两条预警信息。