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ですが、全体の処理率ではありません。遅い間隔は三倍の時間を占めます。間隔数と総時間を一緒に扱いましょう。長さの異なる記録を合算するときも同じ落とし穴があります。

三つの列、同じ合計時間

各列には完結したフレーム間隔が1,000個あり、合計は10,000 msです。間隔とは連続するフレームイベントの間の時間です。ここでは平均FPS = 1,000 × 間隔の個数 ÷ 合計ミリ秒です。記録の開始・終了境界や欠損のない合成データです。

横の位置は経過時間ではなく間隔の順番です。縦の高さは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)番目を選びます。1,000個なら990番目です。不均等な二つの列では、先頭の990個は9 msで、十個の109 msの間隔はすべてその後にあります。ここではP99が小さくても、より安定した体験とは証明できません。他のツールは別の百分位数の計算方法を使うことがあります。

P99は共通の「1% low FPS」ではない

百分位数の境界と、最も遅い間隔の平均は別の計算です。「1% low」という名前だけでは式を特定できません。比較前にツールの定義、記録指標、バージョンを確認してください。このラボはP99をミリ秒で示し、その逆数を1% lowとは呼びません。

同じデータに別の問いを立てる

列と基準レートを選びます。基準時間1,000 ÷ 基準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は10 msの間隔980個と20 msの間隔十個、Bは8 msの間隔1180個と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だが間隔のパターンは違う」と言えます。「このPCなら滑らかに感じる」とは言えません。実際の設定は、比較できる測定の繰り返しと改善したい体験を確認してから維持してください。

この演習で分からないこと

この列は計算を説明し、人の知覚を再現するものではありません。画面の更新動作、可変リフレッシュレート、フレーム生成、入力遅延、ネットワーク遅延、長い間隔の原因は含みません。基準時間は選んだ比較線であり、普遍的な良し悪しの境界ではありません。この例からゲーム、ハードウェア購入、修理を勧めることはありません。