2012-06-13 10 views
5

que han adquirido el hábito de la declaración de variables reutilizados fuera de los bucles de haber trabajado en otros idiomas, así:¿Declarar una variable fuera de un bucle en Objective-C tiene algún efecto de optimización?

NSString *lcword; 
for(NSString *word in tokens) 
{ 
    lcword = [ word lowercaseString ]; 
    ...  
} 

¿Es razonable hacer esto en Objective-C también, o es el compilador lo suficientemente inteligente como para hacer es innecesario?

+0

En la mayoría de los casos no es razonable volver a utilizar una variable. Bug fest a través de la micro-optimización –

Respuesta

9

No hay ningún beneficio en Objective-C que yo sepa. AFAIK cada compilador Objective-C moderno asigna el espacio de pila para las variables locales al principio de la función o método. El alcance de la variable al bucle solo le impide usar el nombre fuera del bucle y evita que el compilador reutilice el espacio de la pila si así lo desea.

Consulte también: Is there any overhead to declaring a variable within a loop? (C++) (Se trata de un idioma diferente, por lo que no sería marcarla como una víctima, pero las técnicas de compilación en el trabajo son muy similares)

0

Si puede reutilizar una variable, hágalo. No es necesario declarar uno nuevo en cada iteración si no es necesario.

+3

Eso hace que la variable tenga un alcance mayor del necesario por lo que existe una mayor posibilidad de ser mal usado – Mark

+2

No puedo estar de acuerdo con esto como se indica. Debe usar las variables de la manera que tenga más sentido semánticamente. Intentar forzar su reutilización es una receta para los errores. A menos que tenga un problema real y el cambio solucione de manera mensurable ese problema, reducir la legibilidad de su programa para obtener ganancias en el rendimiento especulativo casi siempre es una mala idea. – Chuck

+0

También estoy de acuerdo contigo @chuck para mí, facilita la legibilidad, así que cada vez que puedo reutilizar una variable, lo hago. –

Cuestiones relacionadas