XNA ゲームを作成していますが、いくつかのループを最適化する方法があるかどうか疑問に思っています。例えば:
タイルのコレクションを含む Map クラスがあるため、Map Update() ですべてのタイル Update() を呼び出すだけです。
// Update method in Map Class
public void Update()
{
for (int index = 0; index < tiles.Count; index++)
{
tiles[index].Update();
}
}
これは問題なく動作しますが、Particle クラスのように、すべてのパーティクルが ParticleManager クラス (パーティクルのコレクションを含む) で管理されるように、いくつかのより大きな人口のオブジェクトでは最悪になる可能性があります。
// Update method in ParticleManager class
public void Update()
{
for (int index = 0; index < particle.Count; index++)
{
particle[index].Update();
}
}
//Update Method in Particle class
public void Update()
{
for (int index = 0; index < Map.tiles.Count; index++)
{
CheckCollitions(Map.tile[index], this);
}
}
ParticleManager はすべてのパーティクルに対してループし、各パーティクルはすべてのタイルの衝突をチェックします。したがって、20 個のパーティクルと 100 個のタイルがある場合、多くの計算が行われます。
20 loops cycles * 100 loops cycles
そのため、ループの展開などのいくつかの最適化を考えていましたが、未定義の長さのループで機能するかどうかはわかりません (そうではないと思います) (コンパイラーはコンパイル時にこれらのループの長さを知らないため)。
総括する:
- ループ展開を使用してこれらのループを最適化することは可能ですか?
- 他のタイプの最適化についてアドバイスしてもらえますか?
ありがとう