私が作成していたXNAゲームは、私のWP7デバイスでゆっくり実行されていました。しかし、Windows Phone Performance Analysisでボトルネックを見つけるためにそれを開始したとき、ゲームは同じデバイスでスムーズに実行されました。
少し後で問題を見つけましたが、これは隣接チェック機能でした。機能を最適化しましたが、ゲームは正常に動作します。
パフォーマンス分析モードでゲームが魔法のようにスピードアップしたのはなぜですか?考えられる説明はありますか?
これは、Perf分析モードでは高速に実行されたコードですが、それ以外の場合は低速でした。タワーディフェンスゲームでのダメージ対処機能です。
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
{
}
}
}
}
各ターゲットではなく、各タワーの損傷をチェックすることで、後で最適化しました。