2012-10-05 26 views
6

Soweit ich weiß, werden der zweite und der dritte Ausdruck jedes Mal in einer for-Schleife ausgeführt.for loop best practice

Ich nahm immer die Leistung als weise an zweiter Stelle wird empfohlen, kann das jemand bestätigen?

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

2)

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

Antwort

-2

Ja, ich bestätige, dass Du Benchmarks suchen, wenn Sie wollen.

Obwohl ich weiß nicht, ob es besser Preform wird immer gehen, wenn es nur ein Getter auf ein Objekt

3

Die zweite Methode besonders wahr ist, wenn es erhebliche Arbeit in doSomething zu tun ist(). Wenn Sie nur Dutzende von Schleifen ausführen und doSomething() nur eine lokale Variable zurückgibt, macht das keinen merklichen Unterschied.

4

Wenn Ihre dosomething() - Funktion unterschiedliche Werte zurückgibt und es in einer einzigen Aufnahme erfolgen kann, ist es besser, die zweite Methode zu verwenden.

$ Optionen = Array (1,2,3,4,5); $ element_count = Anzahl ($ Optionen);

Funktionen wie count(), die in mehreren Aufrufen denselben Wert zurückgeben, können in einer einzigen Variablen gespeichert und in Ihrer for-Schleife verwendet werden.

Wenn Sie für die Leistung sehr streng sind, verwenden ++ $ i statt $ i ++

5

Sie sollten nicht eine Funktion innerhalb einer Schleife Definition nennen, weil diese Funktion wird jede Iteration ausgeführt werden. Wenn Sie nur eine kleine Schleife haben, ist der Effekt vernachlässigbar, aber wenn Sie eine Schleife von Hunderten oder Tausenden von Wiederholungen haben, werden Sie es auf jeden Fall bemerken.

Aber auch wenn Sie nur eine kleine Schleife haben, ist es nur eine schlechte Übung. Also mit einem Wort: nicht.