6

私の知る限り、2 番目と 3 番目の式は for ループで毎回実行されます。

私は常にパフォーマンスに関して2番目のオプションが推奨されることを当然のことと考えていましたが、誰でもこれを確認できますか?

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

2)

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

4 に答える 4

5

関数は反復ごとに実行されるため、ループ定義内で関数を呼び出すべきではありません。小さなループしかない場合、影響は無視できますが、数百または数千回の繰り返しのループがある場合は、間違いなく気付くでしょう。

しかし、小さなループしかない場合でも、それは悪い習慣です。一言で言えば、しないでください。

于 2012-10-05T22:24:37.820 に答える
4

dosomething()関数が異なる値を返し、それを1回のショットで実行できる場合を除いて、2番目のメソッドを使用することをお勧めします。

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

複数の呼び出しで同じ値を返すcount()のような関数は、1つの変数に保存して、forループで使用できます。

パフォーマンスが非常に厳しい場合は、$i++ではなく++$iを使用してください

于 2012-10-05T22:05:34.767 に答える
3

2 番目の方法は、特に doSomething() で実行する作業がかなりある場合は、常により適切に実行されます。数十回のループしか実行せず、doSomething() がローカル変数を返すだけの場合、顕著な違いはありません。

于 2012-10-05T21:58:34.273 に答える
-2

はい、必要に応じてベンチマークを検索できることを確認します。

オブジェクトへのゲッターだけなら本当かどうかはわかりませんが

于 2012-10-05T21:55:54.857 に答える