Si le preocupa el rendimiento, ejecute un generador de perfiles. Luego cambie el código. Lo más probable es que nunca, en un millón de años, adivinará el 100% de la ubicación correcta del tiempo. Podría estar cambiando el tiempo del 0.02% y dejando el método que contribuye con el 62% de la carga. También podrías estar empeorando las cosas. Sin un perfilador y evidencia, eres ciego.
No puede asumir que el JIT inline una propiedad de captador. Hay muchas razones por las que puede o no puede hacerlo; tamaño del cuerpo del método, virtual, valor vs tipo de referencia, arquitectura, depurador asociado, etc.
"elevación" todavía tiene un lugar, y todavía puede conseguir un ahorro si el código se llama repetidamente en un bucle estrecho; por ejemplo:
var count = list.Count;
for(int i = 0 ; i < count ; i++) {...}
(olvidar el debate for
vs foreach
fr lo anterior - esto es una discusión ortogonal). En lo anterior, el "polipasto" ayudará al rendimiento. Pero sólo para estar realmente confuso - con matrices, es todo lo contrario, y es más eficiente para no elevador que:
for(int i = 0 ; i < arr.Length ; i++) {...}
El JIT lo reconoce y elimina la comprobación de límites (como matrices son fijos tamaño).
¡No sabía nada de eso! Es bueno saberlo, gracias! – Groo
Gracias por la información, pero estoy preguntando acerca de una buena referencia para esta información –
Mi punto es que la referencia * no * realmente te ayudará con esto. Un ** profiler ** lo hará. –