XNAパフォーマンステストを自動化しますか?
XNAでのパフォーマンステストの自動化について、人々のアプローチや考えはどうなっていたのだろうと思いました。現在、私は2dでのみ作業していると考えていますが、それはさまざまな実装でパフォーマンスを改善できる多くの領域をもたらします。 例としては、空間分割の2つの異なる実装がある場合、1つは別の実装よりも高速かもしれませんが、実際のパフォーマンステストを行わないと、どれが確かにどれであるかを確実に判別できません(コードが明らかに明らかに遅い場合を除きます)。部品)。特定の時間枠で両方の実装のエンティティを追加/更新/削除し続けるユニットテストを作成し、各時間枠で作成された数を確認できます。高い方がより高速になります(この特定の例では)。 もう1つのより高いレベルの例は、60 fpsを下回ることなく、画面上に大まかにいくつのエンティティを表示できるかを確認する場合です。これの問題は、自動化することです。モックゲームを開始し、気になっている部分を純粋にテストして、他のすべてを無効にするために、隠しフォームトリックなどを使用する必要があります。 テストを自動化できたとしても、これは単純な問題ではないことを知っています。実際に結果が十分に優れているかどうかを判断するのは人間次第ですが、ビルドステップの一部として、これらのテストを実行して公開することができます。比較のためのどこかでの結果。 このようにして、バージョン1.1から1.2に移行したが、いくつかの基本的なアルゴリズムを変更した場合、一般にパフォーマンススコアが上がり、アプリケーションの全体的なパフォーマンスが向上し、1.2から1.3に気付く場合があります。その後、全体的なパフォーマンスが少し低下しました。 では、プロジェクトでこの種のことを自動化した人はいますか?そうであれば、パフォーマンス比較を高レベルでどのように測定し、どのフレームワークをテストに使用しますか?ほとんどのパーツでテスト可能/モック可能になるようにコードを記述しているので、パフォーマンス結果を得るためのメカニズムとしてテストを使用できます... ===編集=== わかりやすくするために、XNA内の自動テストを使用してパフォーマンスを追跡する最良の方法に興味を持っています。テストをプレイしたり、マシンでゲームを手動で実行して推測したりするのではありません。これは、ゲームがXハードウェアでプレイ可能かどうかを確認するのとはまったく異なります。ゲームエンジン/フレームワークが変化したときのパフォーマンスの変化を追跡することについてです。 コメントの1つで述べたように、「QuadTreeA内で2秒以内にいくつのノードを挿入/削除/更新できるか」を簡単にテストできますが、結果が変更されたかどうかを確認するために毎回これらの結果を物理的に調べる必要があります。うまく、バージョン間の違いに気づくかどうかを確認するためにそれを再生するだけに頼るよりも優れています。ただし、Assertを挿入して、2秒で5000を下回ると、失敗を通知して失敗を通知する場合は、実装だけでなくハードウェアのコンテキストでもあるため、もろいテストになります。そうは言っても、これらの種類の自動テストは、ある種のビルドパイプラインとしてテストを実行している場合にのみ実際に使用できます。 チェックアウト->ユニットテストの実行->統合テストの実行->パフォーマンステストの実行->パッケージ したがって、ある種のレポートとして、CIサーバー上のあるビルドから別のビルドへの統計を簡単に比較できます。また、継続的インテグレーションに慣れていない場合、これは誰にとってもあまり意味がないかもしれません。この質問の主な核心は、ビルド間で人々がこれをどのように管理するか、そしてどのようにレポートするのが最善かを知ることです。私が言ったようにそれは主観的である場合がありますが知識は答えから得られるのでそれは価値のある質問のようです。