WOOFY · 遊玩實驗室
FPS 相同,影格節奏不同
FPS 計數器概括的是速率,並不告訴你每一格何時到來。透過這些刻意簡化的序列,了解哪些問題能以彙整數據回答,哪些需要查看時間軸。
用同一組資料回答不同的問題為什麼兩個 FPS 數值不能一律直接取平均
設想兩個完整間隔:10 ms 與 30 ms。它們合計占用 40 ms。應在這段總時間內計算這兩個間隔。
整體速率為 1000 × 2 ÷ 40 = 50 FPS。10 ms 間隔的倒數換算為速率是 100 FPS,30 ms 間隔則約為 33.33 FPS。
將 100 與 33.33 取平均,會得到約 66.67,但這不是整體速率。較慢的間隔占用了三倍時間。請將間隔數與總時長一起考量;合併不同時長的紀錄時,也會遇到同樣的陷阱。
三組序列,總時間相同
每組序列包含 1000 個完整影格間隔,總時間為 10000 ms。間隔是相鄰兩次影格事件之間的時間。這裡,平均 FPS = 1000 × 間隔數量 ÷ 總毫秒數。這些是合成間隔,不涉及擷取邊界或遺漏紀錄。
橫向位置表示間隔的先後順序,並非經過的時間。縱向高度表示持續時間,範圍為 0 至 120 ms。下方文字與數字描述的是同一組資料。
間隔均勻
每個間隔都是 10 ms,均未超過 60 FPS 對應的參考時間預算,約 16.67 ms。
- 平均 FPS
- 100
- P99 間隔(ms)
- 10
- 最長間隔(ms)
- 10
- 超過預算的間隔數
- 0
- 超過預算的間隔占比(%)
- 0
- 這些間隔占總時間的比例(%)
- 0
- 超過預算的最長連續群組
- 0
- 參考時間預算(ms)
- 16.67
十段分散的長間隔
每一百個間隔中的最後一個長 109 ms,其餘 990 個都是 9 ms。長間隔彼此分開。平均值仍為 100 FPS,但 P99 只有 9 ms。
- 平均 FPS
- 100
- P99 間隔(ms)
- 9
- 最長間隔(ms)
- 109
- 超過預算的間隔數
- 10
- 超過預算的間隔占比(%)
- 1
- 這些間隔占總時間的比例(%)
- 10.9
- 超過預算的最長連續群組
- 1
- 參考時間預算(ms)
- 16.67
十段連續的長間隔
同樣的十個 109 ms 間隔現在連續出現在末尾。彙整數值與長間隔分散時相同,但超過參考時間預算的最長連續群組從一個間隔增加到十個。
- 平均 FPS
- 100
- P99 間隔(ms)
- 9
- 最長間隔(ms)
- 109
- 超過預算的間隔數
- 10
- 超過預算的間隔占比(%)
- 1
- 這些間隔占總時間的比例(%)
- 10.9
- 超過預算的最長連續群組
- 10
- 參考時間預算(ms)
- 16.67
為什麼 P99 可能遺漏最長的間隔
本實驗室將間隔由短到長排序,再取從一開始計數的第 ceil(0.99 × N) 項。對於 1000 個間隔,該位置是第 990 項。在兩組不均勻序列中,前 990 個值都是 9 ms,全部十個 109 ms 長間隔都位於該位置之後。因此,這裡的 P99 較低,並不能證明體驗更穩定。其他工具可能採用不同的百分位數計算方法。
P99 並不是通用的「1% low FPS」定義
百分位邊界與最慢間隔的平均值是兩種不同的計算。「1% low」這個名稱不足以確定公式。比較結果前,請核對工具的定義、擷取指標與版本。本實驗室以毫秒呈現 P99,不將其倒數稱為 1% low。
用同一組資料回答不同的問題
選擇一組序列與一個參考影格率。時間預算為 1000 ÷ 參考 FPS:30 對應 33.33 ms,60 對應 16.67 ms,120 對應 8.33 ms。變更參考值只會重新分類間隔,不會改變序列,也不會模擬 FPS 限制器。
上方三個範例皆以 60 FPS 為參考。即使不使用互動控制項,也能閱讀其資料、說明與計算方法。
請選擇清單中的序列與參考影格率,然後再試一次。
你選擇的比較
十段分散的長間隔 · 60 FPS
- 平均 FPS
- 100
- P99 間隔(ms)
- 9
- 最長間隔(ms)
- 109
- 超過預算的間隔數
- 10
- 超過預算的間隔占比(%)
- 1
- 這些間隔占總時間的比例(%)
- 10.9
- 超過預算的最長連續群組
- 1
- 參考時間預算(ms)
- 16.67
僅計算嚴格長於參考時間預算的間隔。等於預算的間隔仍在預算內。
時間占比加總每個計入間隔的完整持續時間,而不只是超出預算的部分。它不是卡頓評分,也不是輸入延遲量測。連續群組描述相鄰的間隔,並不能證明發生了可感知的卡頓事件。
讓設定變更成為公平的比較
請使用你的擷取工具進行實際量測。本實驗室不會讀取硬體資訊,也不會匯入擷取檔案。在認定某項設定有幫助之前,請記錄以下內容。
明確定義一個問題
例如:變更一項圖形設定,能否減少相同路線上反覆出現的長間隔?保持遊戲版本、場景、解析度、影格率上限、同步方式及其他設定不變。記錄所有例外。
擷取可比較的執行紀錄
每次採用一致的預熱流程,並使用相同路線與記錄時間。重複測試每種條件,在可行時交替測試順序。將首次執行的載入或著色器處理與預熱後的測試分開;不要在未記錄原因的情況下刪除不利於結論的尖峰。
搭配時間軸閱讀彙整數據
比較平均速率、分布尾端數值、最長間隔,以及長間隔出現的位置。如果重複執行的結果大量重疊,應將結論標示為不明確,而非挑選最好的一次。平均值不變,也可能伴隨有用的節奏改善。
說明結論的適用範圍
寫下變更的設定、固定條件、重複執行結果與剩餘不確定性。應用程式提交影格的時間間隔、實際顯示的影格與生成的影格可能不同。請比較同一種指標,不要只憑這些數字推斷輸入延遲或 CPU/GPU 故障。
從結果表得到有依據的結論
每個案例探討不同問題:優勢是否重複出現、選定指標是否改善,以及紀錄是否正確合併?先閱讀觀察結果,再判斷它們能支持哪些結論。
以下紀錄都是以完整間隔建構的教學資料,不是真實的效能測試擷取紀錄。A 與 B 只是標籤,不是推薦設定。範例不規定最低重複次數,也不訂定統計顯著性的判斷規則。
最佳單次紀錄似乎指出贏家,完整資料卻不支持
在這個建構的案例中,A 與 B 沿同一路線交替進行,每次 60 秒,擷取指標、暖機、解析度及其他條件皆相同。問題是 B 在這三組比較中,是否呈現可重複的平均速率優勢。
| 重複比較組 | A · 平均 FPS | B · 平均 FPS | B 減 A(FPS) |
|---|---|---|---|
| 1 | 100 | 103 | 3 |
| 2 | 102 | 99 | -3 |
| 3 | 101 | 101 | 0 |
A
- 完整時長內的整體 FPS
- 101
- 各筆紀錄平均 FPS 中的最低值
- 100
- 各筆紀錄平均 FPS 中的最高值
- 102
B
- 完整時長內的整體 FPS
- 101
- 各筆紀錄平均 FPS 中的最低值
- 99
- 各筆紀錄平均 FPS 中的最高值
- 103
只挑最高結果,會得到 A 為 102、B 為 103 FPS。保留所有等時長紀錄,兩者的整體速率都是 101 FPS。各組差值為 +3、−3 與 0 FPS:方向有所改變。
- 可以得到的結論
這組資料未顯示 B 有一致的平均 FPS 優勢,也未證明兩個設定等效;少量建構樣本不足以確立這個主張。
- 接下來要檢查什麼
重複可比較的觀察,並連同擷取條件檢視差異。保留所有有效紀錄,記下排除紀錄的理由。如果重複順序或背景工作可能解釋某個結果,應先改善比較,再選擇贏家。
- 結論的適用界線
數值範圍重疊是一種描述,不是顯著性檢定。最佳單次紀錄與固定重複次數,都不是通用的決策規則。
平均值改善,長間隔指標卻惡化
兩份建構紀錄都持續十秒。A 包含 980 個 10 ms 間隔與十個 20 ms 間隔。B 包含 1180 個 8 ms 間隔與二十個 28 ms 間隔。兩者都採用相同的 60 FPS 參考值,也就是約 16.67 ms。
A
- 時長(s)
- 10
- 完整間隔數
- 990
- 平均 FPS
- 99
- 長於 60 FPS 參考間隔的間隔
- 10
- 這些間隔所占時間比例(%)
- 2
B
- 時長(s)
- 10
- 完整間隔數
- 1,200
- 平均 FPS
- 120
- 長於 60 FPS 參考間隔的間隔
- 20
- 這些間隔所占時間比例(%)
- 5.6
A 總計 990 個間隔,B 為 1200 個:對應 99 與 120 FPS。計入的長間隔在 A 中占用 200 ms,在 B 中占用 560 ms,亦即總時間的 2% 與 5.6%。這些百分比描述時間,不是間隔數量的占比。
- 可以得到的結論
本例中 B 的平均速率較高,但更多時間落在長於所選參考值的間隔裡。數字支持的是指標間的取捨,不能選出整體流暢度的贏家。
- 接下來要檢查什麼
說明你真正的問題是平均速率、反覆出現的長間隔,還是其他量測結果。在保留設定之前,比較相同場景的重複紀錄,並檢查長間隔出現的位置。
- 結論的適用界線
一組 A/B 紀錄不能確立可重複的效果。門檻是選定的參考值;本例既不測量感受,也不測量輸入延遲,且無法判定長間隔的原因。
紀錄時長不同,可能讓直覺排名反轉
A 合併十秒的 120 FPS 紀錄與九十秒的 60 FPS 紀錄。B 合併兩份各五十秒、80 FPS 的紀錄。因此,每個標籤都涵蓋 100 秒。A 的紀錄時長不同,B 的則相同。
| 紀錄 | 時長(s) | 完整間隔數 | 平均 FPS |
|---|---|---|---|
| A1 | 10 | 1,200 | 120 |
| B1 | 50 | 4,000 | 80 |
| A2 | 90 | 5,400 | 60 |
| B2 | 50 | 4,000 | 80 |
A
- 完整時長內的整體 FPS
- 66
- 各筆紀錄 FPS 的算術平均值
- 90
B
- 完整時長內的整體 FPS
- 80
- 各筆紀錄 FPS 的算術平均值
- 80
A 包含 1200 + 5400 = 6600 個間隔:在 100 秒內為 66 FPS。B 包含 4000 + 4000 = 8000 個間隔:為 80 FPS。將 A 顯示的兩個 FPS 數值取平均會得到 90;若把它呈現為整體速率,就會錯誤地將 A 排在 B 之上。
- 可以得到的結論
依完整時長計算,建構資料得到 A 為 66、B 為 80 FPS。得到 90 FPS 的簡化方法,對時長差異很大的紀錄給了相同權重。
- 接下來要檢查什麼
若問題是整體速率,請合併間隔數與時長。比較設定效果時,也要對齊場景組成、暖機與擷取指標;正確的算術無法補救不一致的條件。
- 結論的適用界線
逐筆紀錄的 FPS 平均值回答的是另一個問題,本身並非無效。但不能將它改稱為整體速率。單憑這些彙總值,無法表示改善是由 B 所造成。
改變彙總方式,保留紀錄
使用同一批建構資料,比較完整時長的計算與各案例討論的簡化方法。只有彙總方式改變,紀錄及其條件保持不變。
請選擇清單中的案例與彙總方法,再試一次。
所選彙總結果
挑選紀錄 · 使用完整時長
- A · 平均 FPS
- 101
- B · 平均 FPS
- 101
- B 減 A(FPS)
- 0
保留全部六份等時長紀錄。A 與 B 的整體速率都是 101 FPS。彙總值相同,並不證明效能等效或影格間的時間分布完全相同。
只挑每個標籤下數值最高的紀錄:A 為 102、B 為 103 FPS。這會捨棄其他有效觀察,不能作為優勢反覆出現的證據。
總間隔數除以總時間,得到 A 為 66、B 為 80 FPS。這回答了整體速率的問題,但不能確立場景可比性或設定的因果效果。
這個方法平均各筆紀錄的 FPS,卻不依時長加權:A 為 90,B 為 80。這是不同的彙總方式,若稱作整體速率就會誤導。
有用的結論也可以保留不確定性
這些資料支持「兩組範例的平均值都是 100 FPS,但間隔分布模式不同」,卻不支持「這台電腦玩起來一定流暢」。測試自己的設定時,應先檢查重複且可比較的量測結果,以及你想改善的體驗,再決定是否保留設定。
這個練習無法告訴你什麼
這些序列示範的是算術,而非人的感知。它們不涵蓋顯示器更新行為、可變更新率、影格生成、輸入延遲、網路延遲或長間隔的成因。參考時間預算是一條自行選定的比較線,並非通用的好壞分界。這些範例不構成對任何遊戲、硬體購買或維修的建議。