Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Co jest szybsze - while czy for?
LamaMASTER
post
Post #1





Grupa: Zarejestrowani
Postów: 160
Pomógł: 0
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mdco
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 5
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


Do takiego skryptu najlepiej zastosować foreach" title="Zobacz w manualu php" target="_manual.
Zobacz ten benchmark: http://byster.net/?page_id=36

Ten post edytował mdco 30.06.2006, 21:45:15
Go to the top of the page
+Quote Post
LamaMASTER
post
Post #3





Grupa: Zarejestrowani
Postów: 160
Pomógł: 0
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Dzięki! Ten benchmark jest super - tego mi było trzeba (IMG:http://forum.php.pl/style_emoticons/default/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?
Go to the top of the page
+Quote Post
siemakuba
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 112
Pomógł: 20
Dołączył: 10.04.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
LamaMASTER
post
Post #5





Grupa: Zarejestrowani
Postów: 160
Pomógł: 0
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Faktycznie, masz rację. Wielkie dzięki!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:53