2012-06-13 9 views
5

ho preso l'abitudine di dichiarare variabili riutilizzati loop fuori da aver lavorato in altre lingue, in questo modo:Dichiarare una variabile al di fuori di un ciclo in Objective-C ha qualche effetto di ottimizzazione?

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

È ragionevole fare questo in Objective-C anche, o è il compilatore abbastanza intelligente da fare non è necessario?

+0

Nella maggior parte dei casi non è ragionevole riutilizzare una variabile. Bug fest attraverso la micro-ottimizzazione –

risposta

9

Non c'è alcun vantaggio in Objective-C che io conosca. AFAIK ogni moderno compilatore Objective-C alloca lo spazio di stack per le variabili locali all'inizio della funzione o del metodo. Scoping della variabile sul ciclo ti impedisce solo di usare il nome al di fuori del ciclo e impedisce al compilatore di riutilizzare lo spazio dello stack, se lo desidera.

Consulta anche: Is there any overhead to declaring a variable within a loop? (C++) (Si tratta di un linguaggio diverso, quindi non avrebbe segnato come una vittima, ma le tecniche di compilazione sul lavoro sono molto simili)

0

Se è possibile riutilizzare una variabile, eseguire l'operazione. Non è necessario dichiararne uno nuovo ogni iterazione se non è necessario.

+3

Questo rende la variabile avere una portata maggiore del necessario, quindi una maggiore possibilità di essere usata in modo errato – Mark

+2

Non posso essere d'accordo con questo come affermato. Dovresti usare le variabili nel modo che ha più senso semanticamente. Cercare di forzarne il riutilizzo è una ricetta per i bug. A meno che tu non abbia un problema reale e il cambiamento risolva questo problema, ridurre la leggibilità del tuo programma per i guadagni speculativi delle prestazioni è quasi sempre una cattiva idea IMO. – Chuck

+0

Sono d'accordo anche con te @chuck per me facilita la leggibilità quindi ogni volta che posso riutilizzare una variabile lo faccio. –

Problemi correlati