← ALL ARTICLES

性能对照实验

全库目录221
本文目录10

性能调查先确定可复现负载和指标,再设计能排除假设的实验。帧捕获解释执行了什么,GPU 计时解释成本;两者需要结合,单次捕获截图不能代表长期稳定收益。

固定测量条件

记录提交、场景、相机路线、设备、API、分辨率、画质、构建和预热步骤。CPU/GPU 频率、温度与后台负载可能改变结果。比较多次稳定窗口,保留中位数和高分位。两组实验交替或随机安排,可以减轻温度缓慢变化造成的偏差;若收益小于波动,就增加重复次数并保留分布,而不是只报平均值。

例如用 A/B/B/A 四个等长窗口交替测量,按相邻窗口配成(A0,B1)与(A3,B2),统一记录A减B的时间差。例如四窗口依次为5.0、4.3、4.4、5.3毫秒,两份差为0.7与0.9毫秒,均值0.8毫秒;线性升温趋势在正反配对中方向相反,平均可以减轻它的影响。若后半段设备升温,单独先跑完全部 A 再跑全部 B 就可能把温度趋势误当成方案差异。报告中同时保存窗口长度、有效帧数、舍弃预热的理由和分位数计算方法;有丢帧或动态分辨率变化的窗口另作标记,不悄悄删掉不利结果。

时间线与关键路径

CPU 记录、提交等待、GPU 执行和呈现可能重叠。CPU 某段“等待”可能是 GPU 已满,也可能是垂直同步或帧限流。先看依赖关系,再决定优化哪个工作者。

text
复现场景并预热
  → 记录 CPU、GPU、内存和显示节奏
  → 找到关键路径
  → 提出单一可检验假设
  → 只改变相关因素
  → 检查执行路径与图像
  → 重复测量并回归其他场景

最小对照表

text
假设:某全屏通道受附件带宽限制
保持:相机、Shader、场景、驱动和构建
改变:目标分辨率,按 1.0 / 0.75 / 0.5 运行
记录:像素数、GPU 时间、外部读写、图像误差
检查:附件数量、格式、通道合并是否相同
结论:降分辨率变快先支持像素相关成本;结合外存流量与后续对照再判断附件带宽

降分辨率可能改变 LOD、灯光列表和资源合并,需要捕获确认,不能只按时间缩放比解释。路径保持相同时,像素算术与附件读写仍一起减少;随后在输出误差允许的条件下固定像素数、减少附件位宽,或固定附件而简化算术,观察时间与外存计数器如何响应。位宽变化也可能改变压缩与通道合并,因此每轮继续核对实际路径。只有多个对照共同支持,才能把像素相关收窄为附件带宽假设。

可否定的时间模型

以固定路径的全屏通道为例,先假设时间由固定开销a与像素成本b组成:T(s)=a+bss,s是宽高比例。假设数据T(1)=4毫秒、T(0.5)=1.75毫秒,可解得b=3毫秒、a=1毫秒,预测T(0.75)=2.6875毫秒。若实测明显偏离,先核对降分辨率是否切换了核、格式、灯列表或缓存行为;路径相同仍偏离时,该线性像素模型不足。这些数字是算例,不是测量结果,也不能由拟合本身断定带宽受限。

整帧还需要验证关键路径。若被改通道从4降至3毫秒,同时与它重叠的另一队列从5升至6毫秒,局部节省不保证吞吐改善。把两条队列及最终汇合等待放在同一时间轴,比较汇合完成时刻,才是本轮优化的整帧结果。

窗口统计与结果判定

先固定每个窗口的取样单位。本例把预热后的逐帧时长排序为t[0..n−1],P95采用最近秩法,取t[ceil(0.95*n)-1],P99同理;中位数在偶数样本时取中间两项平均。一个窗口只有20帧,P99实际就是最大值,不能据此描述稳定的长尾分布。保留逐帧原始值和窗口身份,才能在增加样本后复算相同指标。

ABBA每个窗口先分别算指标,再按相邻配对形成A减B的差值;比较中位数的收益与比较P99的收益各自成列。比如主体帧从10降到9毫秒,但每百帧新增一次100毫秒停顿,中位数改善不能覆盖这次新停顿。报告同时给窗口内尖峰次数、最大值及尖峰对应事件,回到加载或提交时间线定位原因。

连续帧共享温度、缓存和任务状态,不能把同一窗口内上千帧都视作上千次独立重复。用多个完整ABBA组检查差值方向是否稳定,并覆盖冷启动与长时间运行。若配对差值在正负间变化且幅度与收益相当,结论是当前负载下尚不能区分收益与波动;保留分布并增加独立窗口,不从单个最快窗口选择结果。图像变化、动态分辨率或路径切换则单独报告,不能与保持质量的性能收益合并。

工具职责

Frame Debugger 用于查看引擎绘制阶段与输入输出,Render Graph viewer 用于查看逻辑资源依赖。RenderDoc 提供 Draw/派发、资源、状态和部分像素历史;PIX、Nsight、RGP 等工具提供平台特定时间线和计数器。Unreal Insights 或引擎 Profiler 用于 CPU、任务与加载。

捕获本身可能插入等待或改变调度。性能数字来自指定测量方法,图像与状态证据来自捕获,两者在记录里分别列出。

故障诊断

黑屏先检查输出是否被消费、附件是否写入、viewport 和着色器绑定。串帧检查完成值、上传环和描述符回收。拖影检查重投影、深度约定与历史有效性。性能恶化先确认目标路径实际执行,再看它增加的成本维度。

验证方法

一次有效调查应同时保留假设、实验条件、重复测量和输出证据。复查者能够在相同构建运行相同路线,并根据数据接受或否定结论。通道更快而整帧更慢时,报告关键路径与资源竞争,不能只报局部收益。

相关主题

参考资料