2012-10-05 13 views
6

Per quanto ne so, la seconda e la terza espressione vengono eseguite ogni volta in un ciclo for.per best practice di loop

Ho sempre dato per scontato il rendimento, è consigliabile la seconda opzione, qualcuno può confermarlo?

1) for($i=0;$i<=dosomething();$i++) [...]

2)

$max = dosomething(); 
for($i=0;$i<=$max;$i++) [...] 

risposta

-2

Sì confermo è possibile cercare punti di riferimento se si vuole.

Anche se non so se è vero se è solo un getter a un oggetto

3

Il secondo metodo sta andando sempre preforme meglio, specialmente se c'è ancora parecchio da fare in doSomething(). Se stai facendo solo decine di cicli e DoSomething() sta solo restituendo una variabile locale, allora non farà una differenza evidente.

4

Se la funzione dosomething() non restituisce valori diversi e può essere eseguita in un singolo scatto, è preferibile utilizzare il secondo metodo.

$ options = array (1,2,3,4,5); $ element_count = count ($ options);

Funzioni come count() che restituisce lo stesso valore in più chiamate può essere salvato in una variabile e utilizzarlo nel ciclo for.

Se siete molto rigoroso per le prestazioni, l'uso ++ $ i, invece di $ i ++

5

Non si dovrebbe chiamare una funzione all'interno di una definizione ciclo perché quella funzione verrà eseguito ogni iterazione. Quando si ha solo un piccolo loop, l'effetto è trascurabile, tuttavia se si dispone di un ciclo di centinaia o migliaia di iterazioni si noterà sicuramente.

Ma anche se si ha solo un piccolo circuito, è solo una cattiva pratica. Quindi in una parola: non farlo.