Guide

为什么第一次分数较低:Shader 编译说明

说明第一次浏览器 GPU 测试为何偏低、Shader 编译如何影响 FPS,以及公开结果为何应使用预热后数据。

🚀 volumeshadertest
今天
5 分钟

第一次 benchmark 结果偏低,常见原因是浏览器和驱动还在编译、链接 shader 程序。Volume Shader BM Test 使用循环密集的 raymarching fragment shader,因此第一次运行可能包含后续运行不会重复的准备成本。

渲染前发生了什么

当一个测试模式开始时,浏览器会创建 WebGL shader 程序。驱动会编译 shader 源码、链接成 GPU 程序、分配缓冲区,并准备渲染路径。有些成本发生在第一帧前,有些会影响前几秒帧率。

它如何影响结果

现象 可能原因 建议
第一次低于第二次 Shader 编译和缓存预热 比较第二次结果
前几秒卡顿,之后稳定 驱动管线准备 关注 P10 FPS 和稳定性
每次运行都越来越低 发热或电池降频 让设备降温
只有电池供电时分数下降 电源策略 接电源或关闭省电模式

推荐流程

先用同一模式运行一次,把它当作预热。关闭结果面板,再在同样条件下运行同一模式。记录第二次结果。如果第二次和第三次仍持续下降,问题更可能是热降频,而不是编译。

为什么公开结果需要说明

公开结果应该说明是否为预热后结果、使用的浏览器、测试模式,以及明显的温度条件。没有这些字段,两条同设备名称的结果也可能不可比。

相关页面

标签
Shader 编译FPS方法论