Ein XNA-Spiel, das ich gemacht habe, lief langsam auf meinem WP7-Gerät. Als ich es jedoch in Windows Phone Performance Analysis startete, um den Engpass zu finden, lief das Spiel reibungslos auf demselben Gerät.
Ich habe das Problem etwas später herausgefunden und es war eine Funktion zur Überprüfung der Nachbarschaft. Ich habe die Funktion optimiert und das Spiel funktioniert jetzt einwandfrei.
Warum wurde das Spiel im Perf Analysis-Modus auf magische Weise beschleunigt? Irgendwelche möglichen Erklärungen?
Dies war der Code, der im Perf Analysis-Modus schneller lief, ansonsten aber langsam. Es ist eine Schadens verursachende Funktion in einem Tower Defense-Spiel.
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
{
}
}
}
}
Ich habe es später optimiert, indem ich den Schaden für jeden Turm anstelle jedes Ziels überprüft habe.