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 為參考。即使不使用互動控制項,也能閱讀其資料、說明與計算方法。

僅計算嚴格長於參考時間預算的間隔。等於預算的間隔仍在預算內。

時間占比加總每個計入間隔的完整持續時間,而不只是超出預算的部分。它不是卡頓評分,也不是輸入延遲量測。連續群組描述相鄰的間隔,並不能證明發生了可感知的卡頓事件。

讓設定變更成為公平的比較

請使用你的擷取工具進行實際量測。本實驗室不會讀取硬體資訊,也不會匯入擷取檔案。在認定某項設定有幫助之前,請記錄以下內容。

  1. 明確定義一個問題

    例如:變更一項圖形設定,能否減少相同路線上反覆出現的長間隔?保持遊戲版本、場景、解析度、影格率上限、同步方式及其他設定不變。記錄所有例外。

  2. 擷取可比較的執行紀錄

    每次採用一致的預熱流程,並使用相同路線與記錄時間。重複測試每種條件,在可行時交替測試順序。將首次執行的載入或著色器處理與預熱後的測試分開;不要在未記錄原因的情況下刪除不利於結論的尖峰。

  3. 搭配時間軸閱讀彙整數據

    比較平均速率、分布尾端數值、最長間隔,以及長間隔出現的位置。如果重複執行的結果大量重疊,應將結論標示為不明確,而非挑選最好的一次。平均值不變,也可能伴隨有用的節奏改善。

  4. 說明結論的適用範圍

    寫下變更的設定、固定條件、重複執行結果與剩餘不確定性。應用程式提交影格的時間間隔、實際顯示的影格與生成的影格可能不同。請比較同一種指標,不要只憑這些數字推斷輸入延遲或 CPU/GPU 故障。

從結果表得到有依據的結論

每個案例探討不同問題:優勢是否重複出現、選定指標是否改善,以及紀錄是否正確合併?先閱讀觀察結果,再判斷它們能支持哪些結論。

以下紀錄都是以完整間隔建構的教學資料,不是真實的效能測試擷取紀錄。A 與 B 只是標籤,不是推薦設定。範例不規定最低重複次數,也不訂定統計顯著性的判斷規則。

最佳單次紀錄似乎指出贏家,完整資料卻不支持

在這個建構的案例中,A 與 B 沿同一路線交替進行,每次 60 秒,擷取指標、暖機、解析度及其他條件皆相同。問題是 B 在這三組比較中,是否呈現可重複的平均速率優勢。

重複比較組A · 平均 FPSB · 平均 FPSB 減 A(FPS)
11001033
210299-3
31011010

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
A1101,200120
B1504,00080
A2905,40060
B2504,00080

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 所造成。

改變彙總方式,保留紀錄

使用同一批建構資料,比較完整時長的計算與各案例討論的簡化方法。只有彙總方式改變,紀錄及其條件保持不變。

有用的結論也可以保留不確定性

這些資料支持「兩組範例的平均值都是 100 FPS,但間隔分布模式不同」,卻不支持「這台電腦玩起來一定流暢」。測試自己的設定時,應先檢查重複且可比較的量測結果,以及你想改善的體驗,再決定是否保留設定。

這個練習無法告訴你什麼

這些序列示範的是算術,而非人的感知。它們不涵蓋顯示器更新行為、可變更新率、影格生成、輸入延遲、網路延遲或長間隔的成因。參考時間預算是一條自行選定的比較線,並非通用的好壞分界。這些範例不構成對任何遊戲、硬體購買或維修的建議。