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