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方法論