2016-08-13 9 views
2

私は本当に好奇心が強いです... count($arr)をループで何度も繰り返し使用すると、最初にカウントを格納してから反復すると、パフォーマンスに与える影響は遠隔ですか?PHP配列:繰り返しの前にカウントを格納するか、毎回count()を呼び出しますか?

$count = count($arr); 
for($i = 0; $i < $count; $i++) { ... } 

がこれよりも良くを実行します:

つまり

は、この行い

for($i = 0; $i < count($arr); $i++) { ... } 

を私はパフォーマンスの問題に気づいたことがありませんが、私の配列は、通常、多分数(比較的小さく、多くても百アイテム)。しかし、非常に大きな配列の場合、繰り返し実行する前にカウントを保存するか、ループが実行されるたびにカウントを再計算するかの違いがありますか?

+1

[PHPでのFORループのパフォーマンス]の重複の可能性あり(http://stackoverflow.com/questions/13466268/for-loop-performance-in-php) – RelativePHPNewbie

答えて

0

第2の方法としてカウントを設定すると、すべての繰り返しが実行されます。count()私はあなたが最初のカウントを保存して、あなたがループ内でその変数を使用する最初のアプローチを使用することを好む

for($i=0, $count=count($items); $i<$count; $i++) 
{ 
    // .... 
} 
0

最初の方法が好ましいか、またはこのようなかなっています。

$count = count($arr); 
for($i = 0; $i < $count; $i++) { ... } 

このようにして、count()は1回だけ呼び出され、反復ごとに呼び出されることはありません。あなたは以下のようなループ内count()を使用すると、あなたの配列がcount()100回呼び出されるよりも、100個の値が含まれている場合、第二に、

for($i = 0; $i < count($arr); $i++) { ... } 

count()がループは、例えばover.So反復されるたびに呼び出された

最初のアプローチでは、カウント値を返すために1回だけ呼び出されます。100

したがって、毎回同じ値を繰り返し呼び出して繰り返し実行するのではなく、まず最初にアプローチすることをお勧めします。あなたの配列のサイズがその時にはるかに大きければ、両方のアプローチでパフォーマンスの違いに気付くでしょう。

0

配列上のcount()を呼び出すと一定の時間の複雑さがあるため、トレースのパフォーマンスが変わります。違いが生じるのは、ループ内でその配列の内容を操作する場合です。この場合、配列のサイズは反復ごとに変更されることがあります。通常、これは必要なものではありません。

関連する問題