Tengo el siguiente código:palabra clave 'nueva' en getter> impacto en el rendimiento?
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); }
}
}
Ahora en otra parte de mi código, que alrededor de 2500 llamadas en un bucle para Character.LevelPosition. Esto significa que por cada ciclo de actualización, se están haciendo 5000 'nuevos' Vector2s, y en mi computadora portátil, realmente baja la velocidad de cuadros.
he fijado temporalmente mediante la creación de
var levelPosition = Character.LevelPosition;
antes de que inicio del bucle, pero me siento un poco su código feo para hacer esto cada vez que me encuentro con una situación similar. Tal vez, es el camino a seguir, pero quiero asegurarme.
¿Existe una forma mejor o comúnmente aceptada de hacer esto?
Estoy usando el XNA-Framework, que usa Vector2
's.
¿Es 'Vector2' una 'clase'? No hay mucho código aquí, pero parece que podría (¿debería?) Ser una "estructura", en cuyo caso debería funcionar mucho mejor. En cualquier caso, la solución que mencionas es una optimización totalmente válida, ya que sabes de hecho qué es lo que te está frenando. – Jon
Oh, lo siento. Estoy trabajando en el XNA-Framework, debería haberlo mencionado. – Taelia
¿De verdad necesitas hacer eso 2500 veces? ¿No se puede cortar para, por ejemplo, el área visible? – CodeCaster