Hola, esto es algo que realmente me está molestando y espero que alguien tenga una respuesta para mí. He estado leyendo sobre ref
(y out
) y estoy tratando de averiguar si estoy ralentizando mi código usando ref
s. Comúnmente SUBSTITUIRÉ algo como:¿El costo de rendimiento de usar ref en lugar de devolver los mismos tipos?
int AddToInt(int original, int add){ return original+add; }
con
void AddToInt(ref int original, int add){ original+=add; } // 1st parameter gets the result
debido a mis ojos este
AddToInt(ref _value, _add);
es más fácil de leer y el código de este
_value = AddToInt(_value, _add);
I sé exactamente lo que estoy haciendo en el co de usar ref
, en lugar de devolver un valor. Sin embargo, el rendimiento es algo que tomo en serio, y aparentemente la eliminación de referencias y la limpieza es mucho más lenta cuando se utilizan refs.
Lo que me gustaría saber es por qué todos los envíos que leí dice que hay muy pocos lugares que normalmente pasar una ref
(sé que los ejemplos son artificiales, pero espero que se entiende la idea), cuando se me parece que el ejemplo ref
es más pequeño, más limpio y más exacto.
También me gustaría saber por qué ref
realmente es más lento que devolver un tipo de valor; a mí me parece que si voy a editar mucho el valor de la función antes de devolverlo, sería más rápido para hacer referencia a la variable real para editarla en lugar de una instancia de esa variable poco antes de que se limpie de la memoria.
me gustaría por lo general prefieren devolver un valor por razones estilísticas, ya que me gusta de efectos secundarios funciones gratuitas. – CodesInChaos
¿Está tratando de calcular el costo de rendimiento? ¡Pregunta a un generador de perfiles, no nos preguntes! – sehe
El primer caso es más fácil de leer porque ha nombrado su método en consecuencia. Algo como '_value = Add (_value, _add);' o '_value = SumOf (_value, _add);' es más legible para mí. – nawfal