FPS 測試:測量實際渲染幀率與幀時間穩定性
FPS 測試測量的是瀏覽器每秒真正渲染出多少幀,以及這些幀到來得是否均勻。平均幀率很高也可能藏著肉眼能感覺到的卡頓,所以本頁同時給出幀時間分布、最慢 1% 幀與掉幀計數。三檔渲染負載可以看出設備從哪裡開始吃力。全部取樣透過 requestAnimationFrame 在本機完成,資料不離開分頁。
FPS 測試測量目前瀏覽器分頁每秒實際渲染的幀數,不是螢幕更新率,也不是遊戲內幀率。它取樣 requestAnimationFrame 的幀間隔,輸出目前/平均/最低/最高 FPS、1% low(最慢 1% 幀的平均幀率)以及超過中位幀時間 1.5 倍的幀數。60 Hz 對應約 16.7 ms 的幀預算;結果受 GPU、分頁可見性與背景負載影響。
- 定義
- 目前瀏覽器分頁每秒實際渲染完成的幀數
- 單位
- FPS;幀時間 ms = 1000 / FPS
- 取樣
- requestAnimationFrame,300 幀環形緩衝,1 秒統計視窗
- 1% low
- 樣本中最慢 1% 幀的平均幀率
- 掉幀判定
- 幀時間超過中位幀時間 1.5 倍,屬本工具判定規則,非業界標準
- 參考幀預算
- 60 Hz ≈ 16.7 ms · 120 Hz ≈ 8.3 ms · 144 Hz ≈ 6.9 ms · 165 Hz ≈ 6.1 ms
- 上限
- 受螢幕更新率與垂直同步約束,60 Hz 螢幕每秒最多呈現 60 幀
- 無法測量
- 遊戲內幀率、GPU 使用率、螢幕標稱 Hz
- 資料
- 取樣全部留在瀏覽器分頁內,不上傳、不儲存
FPS 測試到底測的是什麼?
測的是渲染迴圈,不是面板。瀏覽器每次準備繪製一幀時 requestAnimationFrame 會觸發,兩次回呼之間的間隔就是幀時間,用 1000 除以它得到該時刻的幀率。把這些間隔取平均,就是大多數計數器顯示的 FPS;而分布才能說明輸出是否穩定。兩台裝置都可能顯示 60 FPS,一台每幀穩定在 16.7 ms,另一台在 8 ms 與 25 ms 之間來回跳 —— 後者平均值相同,卻明顯卡頓。
這和螢幕每秒重繪多少次是兩個問題。要測量面板的 Hz,請用專門的更新率工具;那個值屬於硬體與連結屬性,這裡的數字描述的是目前分頁實際畫出了多少幀。最終流暢度由兩者中較低的一方決定。
為什麼 1% low 比平均幀率更有參考價值?
最慢的 1% 幀正是卡頓所在:一次垃圾回收、一次紋理上傳、一個背景分頁被喚醒。單幀 50 ms 幾乎不會拉低一分鐘的平均值,但你會清楚看到一次頓挫。把這一小段的平均幀率與掉幀數一起展示,尖刺就藏不住了。本頁把超過樣本中位幀時間 1.5 倍的幀計為掉幀,這是本工具為凸顯離群值自定的閾值,不是標準跑分定義。
直方圖也按這個思路讀:約 20 ms 以下的柱畫成綠色,更慢的畫成紅色。一連片綠柱代表渲染穩定;紅柱按固定節奏出現,通常是背景工作在主執行緒搶資源,而不一定是顯示卡效能不足。
各更新率對應的幀預算
| 更新率 | 幀預算 | 穩定渲染時的表現 |
|---|---|---|
| 60 Hz | 16.7 ms | 幾乎全為綠柱,平均接近 60 FPS |
| 120 Hz | 8.3 ms | 緊密聚集在 8 ms 附近,加載後開始出現紅柱 |
| 144 Hz | 6.9 ms | 餘量很小,背景工作容易造成可見尖刺 |
| 165 Hz | 6.1 ms | 需要輕量頁面與未降頻的 GPU |
常見問題
FPS 測試是做什麼用的?+
測量瀏覽器分頁每秒渲染的幀數以及幀時間是否穩定,用於發現卡頓、在同一裝置上對比不同渲染負載、檢查頁面是否守住幀預算,不能用來讀取螢幕規格。
什麼是 1% low?+
樣本中最慢 1% 幀的平均幀率。它能暴露被長期平均值掩蓋的短暫停頓,通常比平均 FPS 更接近肉眼感受到的流暢度。
實測幀率為什麼低於螢幕更新率?+
可能是頁面對目前 GPU 太重、瀏覽器在限制背景分頁,或裝置處於省電模式。渲染還會與螢幕同步,因此更新率只是上限而非保證值。
結果會上傳或儲存嗎?+
不會。幀時間只存在記憶體中用於顯示,離開頁面即丟棄,沒有帳號、沒有網路請求、不保留歷史記錄。