2012-10-05 18 views
6

O ile mi wiadomo, drugie i trzecie wyrażenie są wykonywane za każdym razem w pętli for.dla najlepszej praktyki pętli

Zawsze brałem za pewną wydajność, zalecana jest druga opcja, czy ktoś może to potwierdzić?

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

2)

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

Odpowiedz

-2

Tak potwierdzam można szukać punktów odniesienia, jeśli chcesz.

Chociaż nie wiem, czy to prawda, czy to tylko getter do obiektu

3

Druga metoda zawsze będzie preform lepiej, zwłaszcza jeśli nie jest istotna do zrobienia w doSomething(). Jeśli robisz tylko dziesiątki pętli, a doSomething() po prostu zwraca zmienną lokalną, to nie spowoduje zauważalnej różnicy.

4

O ile funkcja dosomething() nie zwraca innych wartości i można to zrobić w jednym ujęciu, lepiej zastosować drugą metodę.

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

Funkcje takie jak count(), które zwracają tę samą wartość w wielu połączeniach, można zapisać w jednej zmiennej i użyć w pętli for.

Jeśli są bardzo surowe dla wydajności, należy ++ $ i zamiast $ i ++

5

Nie należy wywołać funkcję wewnątrz definicji pętli, ponieważ ta funkcja zostanie wykonana każdej iteracji. Kiedy masz tylko małą pętlę efekt jest pomijalny, jednak jeśli masz pętlę setek lub tysięcy iteracji, na pewno zauważysz.

Ale nawet jeśli masz tylko małą pętlę, to po prostu zła praktyka. Jednym słowem: nie rób tego.