1.CPU Usage
2.垂直同步
3.屏幕撕裂
1.CPU Usage
CPU Usgae表示用于展示每一帧CPU所花费的时间

a.Rendering
花费多少时间准备渲染命令, 如Camera.Render, DrawCalls生成阶段
b.Scripts
花费多少时间执行C#脚本(如Update, Start, 协程)
c.Physics
花费多少时间进行物理计算, 包括碰撞检测, 刚体模拟
d.Animation
花费多少时间处理动画相关, 比如带有蒙皮网格渲染器(Skinned MeshRenderers), Animation, Animator等和动画相关
的组件
e.GarbageCollector
花费多少时间处理GC(垃圾回收), 即GC垃圾回收造成的性能抖动
f.VSync
花费多少时间等待垂直同步完成(可能会造成卡顿)
g.Global ILLumination
花费多少时间来处理实时全局光照
h.UI
花费多少时间来处理UI相关, 比如Canvas更新, 重建, 批处理等UI绘制任务
i.Others
花费多少时间来处理不属于上述模块的其他任务, 比如Unity编辑器本身的消耗或未分类的任务或引擎底层消耗
a.其中竖线中的数值, 用不同颜色表示各部分耗时
b.其中的横线
- 66ms(15FPS)
- 33ms(30FPS)
- 16ms(60FPS)
帮助我们直观的看到当前帧消耗是否超过了目标帧率允许的上限

1).TimeLine 时间线视图, 显示特定帧的时间细分信息以及该帧长度的时间轴
a.显示的方式: 横向时间轴, 按线程显示每个函数的开始和持续时间, 精确到每个调用片段
b.结构: 一个横轴 = 一帧时间, 纵轴 = 不同线程(Main Thread、Render Thread等)
c.用途: 看每个函数调用在时间上所占的位置和长度清楚显示函数调用之间是否并发/串行, 非常适合排查主线程阻塞, 线程
切换耗时等问题
2).Hierarchy(层级视图), 按时间数据的内部层级结构对这些数据分组
a.显示方式: 以调用栈的方式展示函数调用结构, 从根函数一路展开
b.结构: 每一行是一个函数调用, 子函数缩进在其下方
c.用途: 快速发现树顶函数调用最多的分支, 定位哪一个函数调用下挂着最多性能开销
3).Raw Hierarchy(原始层级)近乎原始地、逐项地列出Profiler在那一帧捕获到的所有性能调用条目, 每个动作都单独列明
没有遗漏和聚合
a.显示方式: 不做任何聚合和折叠处理, 展示完整原始采样数据
b.用途: 查看完整调用链, 更贴近采样器采集的真实结构, 但可能非常冗长和复杂
Hierarchy层级视图关键信息
a.Live
开启后在模块详细信息面板中显示有关当前帧或选定帧的信息, 关闭后, 只要选择一帧时才会显示

2.垂直同步
1).垂直同步为什么会影响帧率
- 显示器通常以固定的频率刷新画面(如60Hz表示每秒刷新60次, 每帧16.67ms); 而显卡渲染图像的速度通常不固定, 有
时快于显示器刷新, 有时慢于显示器刷新
- 垂直同步(VSync)会强制让显示器准备好再提交新帧, 避免屏幕撕裂
2).影响帧率主要有两种情况
a.帧率略高于刷新率 → 强制等待
比如显卡渲染能力是90FPS, 而显示器是60Hz; VSync开启后, GPU只能每16.67ms渲一帧 → 被卡在60FPS
b.帧率低于刷新率 → 被降档处理
比如显卡当前只能50FPS, VSync要求必须整除刷新频率, 于是GPU被降档到30FPS(60Hz/2), 这会造成严重卡顿或掉帧
3).何时开关
a.开发调试时: 通常关闭VSync, 观察真实的GPU性能瓶颈
b.低端机运行卡顿时: 关闭VSync, 可减少帧率锁死卡顿
c.正式发包时: 一般开启VSync, 防止撕裂(尤其是主机或高帧率设备)或者交给玩家在设置中进行设置
4).如何设置
a.代码控制
QualitySettings.vSyncCount = 0;
b.Edit > Project Settings > Quality

VBI(Vertical Blanking Interval)简介

垂直同步的工作原理:
a.同步点
显示器每次刷新结束, 回到屏幕顶部准备开始下一次刷新时, 会发出VBI的信号
b.等待命令
开启垂直同步后, GPU在渲染完一帧后, 不会立即用新数据覆盖帧缓冲区
c.等待
GPU会等待那个VBI信号到来
d.交换
只有当收到这个信号, 意味着显示器已经完成了一次完整的刷新, GPU才会将新渲染好的帧提交到帧缓冲区, 让显示器在
下一个刷新周期显示

3.屏幕撕裂
屏幕撕裂(Screen Tearing)是指显示器上同时显示出两个或更多帧的不同部分, 导致画面出现错位、断裂的现象; 它就像是
把两张不同的照片各切掉一半, 然后错误地拼接在一起, 看起来非常不连贯
