Se la variabile non è necessaria al di fuori della funzione, dovrebbe trovarsi all'interno della funzione. Questo permette al compilatore di fare il miglior lavoro di ottimizzazione del codice, oltre a rendere il codice più leggibile e facile da usare (questo vale in generale, "dichiarare le variabili con il più piccolo ambito possibile", anche se per piccole funzioni, dichiarando una manciata di le variabili nella parte superiore della funzione ogni volta sono l'opzione migliore).
Dal punto di vista delle prestazioni, passare una variabile a una funzione è equivalente, o peggio che avere una variabile locale. [E ovviamente, il compilatore può allineare tutto e si finisce con lo stesso codice in entrambi i casi, ma dipende dal compilatore e dal codice che si ha].
Come altri hanno già detto, passare un puntatore a una variabile locale comporta una "penalità" per accedere al puntatore per ottenere il valore. Potrebbe non fare una grande differenza, ma quasi sicuramente fa la differenza. Questo dovrebbe essere definitivamente l'ultima risorsa. [Si noti che se la variabile è LARGE, il sovraccarico di passare una copia alla funzione potrebbe essere ancora peggiore del sovraccarico di un puntatore. Ma se assumiamo che sia un tipo semplice come int
o float
, un puntatore ha un overhead notevole].
Ogni volta che c'è una domanda sulle prestazioni, DEFINITIVAMENTE si dovrebbe valutare il proprio codice. Chiedere a qualcun altro su Internet può essere utile se c'è una scelta tra algoritmi per l'ordinamento o qualcosa del genere, ma se si tratta di "è meglio fare questo o quello" in alcune più sottili differenze, allora le differenze sono spesso piccolo e ciò che il tuo particolare compilatore avrà avrà molta più influenza di "che è teoricamente migliore".
fonte
2013-04-09 16:59:17
Qualsiasi risultato risulti in codice più pulito è una pratica migliore, in questo caso, dichiarando la variabile all'interno della funzione. Se sei preoccupato per quale è più veloce, quindi punto di riferimento. – cdhowie
Quindi quello che stai chiedendo è: creare la variabile nella funzione o passarla come parametro? Dovrebbe essere abbastanza comparabile. – cnicutar
Ok, fantastico, grazie. – user2252786