瀏覽器 GPU 基準測試能測什麼,又不能測什麼
我們自己開發瀏覽器基準測試,所以不妨把這篇文章當成廠商主動印在包裝上的副作用說明。瀏覽器 GPU 分數確實測量了真實存在的東西,但這個東西與 3DMark 測量的並不相同。假裝兩者一樣,正是基準數字淪為玄學的開始。
這個數字實際包含什麼
當我們的效能測試報告你的裝置能以穩定影格率承載 600,000 個粒子時,這個數字是一整條鏈路共同作用的結果:
- GPU 晶片本身,這是顯而易見的;
- 驅動程式,以及瀏覽器包在它外面的轉接層;
- 瀏覽器合成器,它決定繪製的畫面何時真正到達螢幕;
- JavaScript 及其垃圾回收器,尤其是在偏重 CPU 的場景中;
- 作業系統的電源管理器,它每秒都在決定裝置可以使用多高的時脈;
- 散熱條件——機身、風扇曲線,以及距離上一次測試過了多久;
- 還有同時運作的一切:40 個分頁、視訊會議,以及防毒軟體的午後掃描。
原生基準測試會有意繞過其中一些環節,以便隔離硬體效能。瀏覽器基準測試則保留整條鏈路,這既是缺點,也是價值所在。
什麼時候不該看瀏覽器分數
跨系統替 GPU 排名。 同一張顯示卡在不同瀏覽器、驅動版本或作業系統下,分數可能出現有意義的差異,因為瀏覽器本身就是一層翻譯:WebGL 呼叫會被轉換成底層的原生圖形 API,例如 macOS 上的 Metal、Windows 上的 Direct3D。如果你想知道兩款 GPU 誰的純硬體效能更強,應該閱讀使用原生測試的專業評測;那才是合適的儀器。
預測遊戲的絕對 FPS。 經過數週專項最佳化的遊戲引擎,不會像瀏覽器畫布一樣運作。瀏覽器分數與遊戲效能存在寬泛關聯,卻無法準確預報具體遊戲影格率。
解讀細小差距。 任何瀏覽器基準連續執行五次,都會自然出現幾個百分點的波動。小於這個範圍的差別只是雜訊。我們會標記因溫度而降速的測試,並允許你查看各場景結果,正是為了避免過度解讀微小差距。
什麼時候瀏覽器分數恰好最合適
測量網頁實際能用到的效能。 如果你關心的是大型 Web App、Canvas 工具、地圖和 WebGL 網站在一台裝置上的體驗,轉譯層就不是測量誤差,而是被測對象本身。原生基準看不到某次瀏覽器退步讓真實網頁效能減半;瀏覽器基準則正好運作在這條鏈路之中。
讓自己的裝置與自身比較。 同一裝置、同一瀏覽器,在驅動更新、系統升級或可疑變慢的前後各測一次——這是瀏覽器基準最有價值的場景,因為除改動項以外,其餘條件都保持不變。分數歷史只保存在你的裝置中,正是為了這種比較。
大規模比較同一鏈路。 同一個版本的工作負載累積上萬次測試,再按 GPU 系列分組,就能得到真正有價值的中位數:例如 M 系列 MacBook 或中階 Android 手機在瀏覽器裡通常能達到什麼水準。我們的匿名樣本會逐步形成這套資料,並且只有樣本數達到門檻才會公開。
快速檢查你不擁有的硬體。 無須安裝、無須管理員權限,在待驗的二手筆電或管控嚴格的辦公電腦上也能執行。能真正跑起來的測試,勝過無法安裝的「更好」測試。(也可參閱二手裝置螢幕檢查流程。)
我們如何讓數字保持誠實
完整細節見分數如何計算,這裡先概括基本原則:
- 測影格時間,不看 FPS 計數器。 我們在數秒視窗內評估影格時間的第 95 百分位數;把卡頓平均掉的基準測試,測到的只是行銷數字。
- 固定影格預算。 無論顯示器更新率是多少,預算始終為 16.67 毫秒,因此 120Hz 筆電不會因為螢幕更好而受罰。
- 工作負載版本化。 只要改變一個場景的繪製內容,基準版本就會升級,不同版本的分數永不互比。
- 明確標記降速,而不是混入平均。 如果裝置在執行途中變慢(通常是過熱),結果會直接說明,而不是悄悄把降頻後的表現揉進一個數字。
- 不假裝實驗室。 這項分數就叫瀏覽器工作負載分數,因為它測量的正是這個。
如何得到值得保留的數字
盡量關閉其他程式,接上電源,關閉省電模式,讓裝置先冷卻,執行期間不要操作——背景負載和溫度,是我們看到的兩大波動來源。然後連續執行兩次,更信任第二次;第一次往往承擔了各種預熱成本。