Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Co jest szybsze - while czy for?
Forum PHP.pl > Forum > PHP
LamaMASTER
Może prędkością to się za dużo nie różni, ale które rozwiązanie pętli jest szybsze:
  1. <?php
  2. $tablica = array('lol', 'mol');
  3. ?>

1.
  1. <?php
  2. $i = 0;
  3. while ($i < count($tablica)) {
  4. echo $tablica[$i];
  5. $i++;
  6. }
  7. ?>

2.
  1. <?php
  2. for ($i = 0; $i < count($tablica); $i++) {
  3. echo $tablica[$i];
  4. }
  5. ?>

No wiadomo, że milisekundy tutaj się liczą, ale ogóline - która pętla w takim zastosowaniu jak powyżej jest szybsza?
mdco
Do takiego skryptu najlepiej zastosować foreach" title="Zobacz w manualu php" target="_manual.
Zobacz ten benchmark: http://byster.net/?page_id=36
LamaMASTER
Dzięki! Ten benchmark jest super - tego mi było trzeba winksmiley.jpg

Oglądałem jeszcze inne benchmarki - wszędzie jest napisane, że pętla for jest szybsza niż while w takim zastosowaniu jak podałem. Czy to prawda?
siemakuba
jeżeli badasz szybkość, to zwróć uwagę jeszcze na to:

for ( -- ustawiasz przed pierwszym przebiegiem pętli -- ; -- sprawdzasz za każym przebiegiem -- ; -- wykonujesz za każdym przebiegiem -- )

więc,
jeżeli w drugiej części for masz count" title="Zobacz w manualu php" target="_manual, to będzie on wykonywany za każdym przebiegiem pętli. To jest niepotrzebne, bo raczej długość tablicy ci się nie zmieni w między czasie.

Lepiej jest tak:
  1. <?php
  2. $a = array('a', 'b', 'itd');
  3.  
  4. for ($i = 0, $n = count($a); $i < $n; $i++)
  5. ?>

pozdr.
LamaMASTER
Faktycznie, masz rację. Wielkie dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.