XNA / MonoGameでフレームレートのロックを解除すると、コードの効率がわかりますか?


12

MonoGameのフレームレートのロックを解除する方法は次のとおりです。

this.graphics.SynchronizeWithVerticalRetrace = false;
base.IsFixedTimeStep = false;

そして、それをゲームでの更新と描画の効率の基礎として使用します。

解像度では240×160、フレームカウンタを除いて描かれたり更新されて何も私はFPSの値を取得900011,000 FPSを。

コードをすべて追加すると、約1,100 FPSになります。

これは、コードがGPUの速度を大幅に低下させている(10倍)ことを示す良い兆候ですか?ゲームは60 FPSで実行されるので、私はまだそれからかなり離れていますが、ロック解除されたフレームレートのどの時点で心配する必要がありますか?

GPU:AMD FirePro W5000(FireGL V)


1
補足事項として、開発パスでは、ターゲットFPSをリリースと同様にデバッグ状態に保つことをお勧めします。リリースでは問題なく実行できますが、デバッグでは非常に遅くなる可能性があります。これは実際には役に立たない:)
Vaillancourt

あんまり。他の答えはこれによく答えますが、主なポイントは、ハードウェアアクセラレーションを使用してグラフィックカードによってほとんどの重荷を持ち上げることです。グラフィックスと同じスレッドで作業しているのでなければ(そうすべきではありません)、FPSがコードの影響を受ける理由はありません(理由の範囲内で)。
ダンパントリー

回答:


30

おおざっぱにのみ。

まず、FPSは線形尺度ではありません。11k FPSと9k FPSの違いは非常に小さいです(フレームあたり0.0000201秒)。しかし、60と2060 FPS(2k FPSデルタ、11kと9kの間に存在するものと同じ)の差は0.0161秒で、はるかに大きいです。したがって、大きな違いがそれほど悪い場合もそうでない場合もあるため、パフォーマンスメトリックとしては危険です。

代わりにフレームごとの時間を使用することは、推論するのが少し簡単ですが、それでも状況の非常に広い視野です。ゲームの1フレームにかかる秒数を示すだけです。特定の機能を追加または有効にした直後にフレーム時間の大幅な増加を見ない限り、理由はわかりません。

より詳細なプロファイリングを行う時期を決定するための基本的なバロメーターになります。CPUまたはGPUにバインドされているかどうかを判断するためにFPSを使用することは特に悪いことです。GPUプロファイリングは、CPUで時間を測定するほど簡単ではありません(おそらく、タイミングとFPS計算コードが使用される場所です)。

いつ心配する必要があるかについては...まあ、あなたはゲームが60 FPSをターゲットにしていると言った。その近くまたは下に浸り始めたら、おそらくパフォーマンスの問題についてより慎重に考え始める必要があります。それまでは、すべてを機能させることに集中し、それから高速にすることを心配していました。


6
最後の文に+1。私の意見では、パフォーマンスの最適化は時期尚早です(経験から言えば)。
サーダンク

1
c2.com/cgi/wiki?PrematureOptimization -テーマに関する推奨読み取り
Machinarius

必ずしも、ハイエンドマシンがあり、80 FPS前後になる場合は、マシン上で十分ですが、低価格のコンピューターをターゲットにしたい場合は、15 FPSしか得られない可能性があります。理想的には、最高です。ターゲットにしたい最小仕様のマシンでテストを行うことはできませんが、失敗すると、マシン用に最適化することで、マシン用に最適化することもできます。もちろん、ローエンドマシンで十分に高速に実行される場合、特にバグが増加するリスクがあるため、さらに最適化するために余分な労力を費やす必要はありません。
Programmdude

5

なぜそれを使用できなかったのかわかりません!固定/可変タイムステップの違いに対応するために異なるコーディングが必要になる場合があるため、リリース時に修正することを計画している場合は、調整する必要があります。この記事を参照してください:http : //rbwhitaker.wikidot.com/time-steps

これは、私のコードがGPUの速度を大幅に低下させていることを示しています

CPUでもある可能性があります。コード内のホットスポットを見つけるために、Visual Studioの組み込みプロファイラーを定期的に実行することをお勧めします。

心配する必要がありますか?

それは明らかにターゲットとするハードウェアに依存します。サポートする最小要件のマシンに対してコードをテストする必要があります。少なくとも60で実行されていれば、あまり心配する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.