Um jogo XNA que eu estava fazendo estava rodando lentamente no meu dispositivo WP7. No entanto, quando eu o iniciei no Windows Phone Performance Analysis para encontrar o gargalo, o jogo correu sem problemas no mesmo dispositivo.
Eu descobri o problema um pouco mais tarde, e era uma função de verificação de adjacência. Otimizei a função e o jogo funciona bem agora.
Por que o jogo estava acelerando magicamente no modo Perf Analysis? Alguma explicação possível?
Este foi o código que correu mais rápido no modo Perf Analysis, mas lento caso contrário. É uma função de causar dano em um jogo de defesa de torre.
foreach (Target myTarget in _targets)
{
for (int x = -1; x <= 1; x++)
{
for (int y = -1; y <= 1; y++)
{
if (x == 0 && y == 0) continue;
try
{
Tile adjacent = _tiles[(int)myTarget.CurrentTile.X + x, (int)myTarget.CurrentTile.Y + y];
if (adjacent.Tower != null)
{
DealDamage(myTarget, adjacent.Tower);
}
}
catch
{
}
}
}
}
Eu o otimizei mais tarde, verificando o dano de cada torre em vez de cada alvo.