4

現在、私は 2D XNA ゲームに取り組んでいます。マルチプレイヤー モードがうまく機能していないため、最適化が必要です。コードでは、主に foreach ループを使用しており、LINQ や yield return ステートメントはどこにも使用していません。ここでいくらかのパフォーマンスを獲得できることは理解しています。for ループの方が速いので、foreach ループをすべて置き換えようと考えていました。

しかし、for ループで yield return ステートメントを使用してもメリットが得られません。
また、for ループを使用して反復する場合、LINQ は引き続き役立ちますか?


たとえば、1000 個以上の図形 (正方形、三角形、円など) のリストがあり、特定の位置にあるすべての正方形 (75%) を列挙したいとします。これを行う最善の方法は何ですか?
何を使えばいいですか?配列、リスト、for ループ、foreach ループ、yield return および/または LINQ?

4

3 に答える 3

4

これはパフォーマンスの問題であるため、唯一の正しい答えは測定です。

for一般に、残りの部分は反復ごとにコードを追加するため、直接使用するのが最速のアプローチになる可能性があります。自分で試して測定してください - それがあなたのケースで重要かどうか、そしてどのバージョンのコードを最も読みたいかを確認してください。

于 2012-12-20T07:13:59.303 に答える
4

必要なグループ化や並べ替えは、アイテムを取得するときではなく、アイテムを追加するときに実行してください。これは、各項目を 1 回だけ追加する (と思います) ためですが、あなたが言うように、それらを複数回取得しているためです。

于 2012-12-20T07:43:55.350 に答える
0

For必ずループを使用してください。無視できるパフォーマンスの向上がなければ、列挙子オブジェクトを作成しません。したがって、GC に不必要なプレッシャーをかけることはありません。

于 2012-12-20T07:30:48.210 に答える