我正在制作一个 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 为每个粒子循环,每个粒子检查每个 Tile 的碰撞。所以,如果你有 20 个粒子和 100 个 Tiles,它将进行大量计算:
20 loops cycles * 100 loops cycles
这就是为什么我在考虑一些优化,比如循环展开但是,我不知道它是否适用于未定义长度的循环(我认为不是)(因为编译器在编译时不知道这些循环的长度)
总结一下:
- 可以使用循环展开来优化这些循环吗?
- 您能建议我进行任何其他类型的优化吗?
谢谢