Actualmente estoy leyendo de Oreilly Learning XNA 4.0 y me he dado cuenta de que el autor es propenso a la creación de un valor de estructura, tales como Vector2
o Rectangle
varias veces sin tener en cuenta el rendimiento.Rendimiento de crear estructura valora
Por ejemplo, un método SquareCollision()
, que comprueba la colisión entre dos entidades juego crea dos Rectangle
s cada vez que se llama, en lugar de simplemente tener cada entidad juego sostener su propio campo Rectangle
y comparar los campos sin crear más struct valores.
He visto este patrón muchas veces en muchos lugares y eso me hizo preguntarme:
¿La creación de valores de estructura es despreciable en C#?
¿Esto realmente cae bajo la sección de micro-optimizaciones?
Tal vez porque mi experiencia es en su mayoría con Java, el concepto de ValueType
s es extraño para mí, pero parece que la recreación de un valor de una estructura (y llamar a su constructor) varias veces parece como una gran pérdida de recursos.
¿Has intentado perfilarlo? –
Creo que esto es un poco difícil de perfilar, porque lo que realmente importa es el rendimiento general. Incluso si la recreación del mismo valor es 10.000 veces más lenta que utilizando un campo, todavía significaría poco si solo tiene un impacto de 0,0001% en el rendimiento. (Perdón por los números arbitrarios, solo intento asegurarme de que me comprendan.) Lo que trato de entender es cuán mala práctica es en realidad (si es que la hay) y si debo o no tratar de evitar hacerlo. – Acidic
Puede hacer que la pregunta sea un poco más concreta al mostrar el código. Evita malentendidos. –