için php diziler yinelenmesi için hızlı olan ise vs vs foreach

4 Cevap php

php diziler yinelenmesi için hızlı hangisi? veya başka diziler yinelenmesi için de daha hızlı olan var mı?

4 Cevap

Fark her türlü olsa bile, o fark hiç önemli olmayacak kadar küçük olacaktır.

Eğer varsa, diyelim ki, veritabanına bir sorgu, bu sonuçlar üzerinde döngü yineleme kıyasla çok uzun sürer o for foreach vs {[(vs ebedi tartışma 2)]}, bir şey değişmeyecek - veri makul bir miktarda en azından eğer.

Böylece, kullanımı:

  • Eğer istersen
  • Lütfen programlama standardını uyuyor ne olursa olsun
  • Lütfen kodu / uygulama için en uygun ne olursa olsun

/ Düğmeleri mikro-optimizasyon bu tür düşünmeye önce optimize gerektiğini olabilir başka şeyler bol olacak.


And if you really want some numbers (even if it's just for fun), you can make some benchmark and see the results in practice.

Benim için ben bu dayanarak benim döngü almak:

foreach

Uzunluğu (veya olabilir) bilinmeyen bir dizi yineleme zaman kullanın.

for

Uzunluğu bir sayaç gerektiğinde, set veya bir dizi yineleme zaman kullanın.

while

Bulma, ya da belli bir bayrak tetikleme ifade amacı ile bir dizi yineleme olduğunuzda kullanın.

Şimdi bu gerçek, bu yüzden sonuçta aşağı kişisel tercihi / tarzı söz konusu ... sayılmasını ($ array) kullanarak, bir foreach döngü gibi döngü İÇİN kullanabilirsiniz.

Bir kıyaslama testi yapın.

Farklılıklar mantığı içinde bulunması nedeniyle önemli bir "performans" bir fark var.

  • You use foreach for array iteration, without integers as keys.
  • You use for for array iteration with integers as keys.
  • vb

Doğru hızlı iken başka $ max değişkeni ile bir $ i karşılaştırarak, her yineleme için tek çek var gibi, kullanılan, ve $ i + + dışında (veya döngü sırasında ($ max ayarı hariç) önce döngü ek çağrılar; hangi doğal olarak) herhangi bir döngü deyimi yapılır.

Eğer ((liste. süre gibi.)) Bunu kötüye başladığınızda her işlev çağrısı (yani bir ön-optimize edilmiş olduğundan) bir foreach dahil olduğunca optimize olmayacak gibi, elbette foreach ile daha iyiyiz.

Even then, array_keys() gives you the same usability as foreach, still faster. Vebeyond that, if you're into 2d-arrays, a home-made 2d_array_keys will enable you to use while all the way in a much faster way then foreach can be used (just try and tell the next foreach within the first foreach, that the last foreach had <2d_array_keys($array)> as keys --- ).

Besides, all questions related to first or last item of a loop using a while($i

Ve

while ($people_care_about_optimization!==true){
 echo "there still exists a better way of doing it and there's no reason to use any other one";
}