"новое" ключевое слово в геттере > снижение производительности?

У меня есть следующий код:

public class Character
{
    public Vector2 WorldPixelPosition
    {
        get { return Movement.Position; }
    }
    public Vector2 WorldPosition
    {
        get { return new Vector2(Movement.Position.X / Tile.Width, Movement.Position.Y / Tile.Height); }
    }
    public Vector2 LevelPosition
    {
        get { return new Vector2(WorldPosition.X % Level.Width, WorldPosition.Y % Level.Height); }
    }
}

Теперь где-то еще в моем коде я делаю около 2500 вызовов в цикле к Character.LevelPosition. Это означает, что за цикл обновления создается 5000 «новых» Vector2, и на моем ноутбуке это действительно снижает частоту кадров.

Я временно исправил это, создав

var levelPosition = Character.LevelPosition;

перед тем, как инициировать цикл, но я чувствую, что его уродливый код делает это каждый раз, когда я сталкиваюсь с подобной ситуацией. Может быть, это - путь, но я хочу убедиться.

Есть ли лучший или общепринятый способ сделать это?

Я использую XNA-Framework, который использует Vector2.

8
задан Tim Schmelter 6 March 2012 в 12:36
поделиться