Tijnema ! wrote:

> On 3/22/07, Jon Anderson <[EMAIL PROTECTED]> wrote:
>
>> Your test isn't exactly fair. The for loop has no statements in it, and
>> the while loop has one. Your tests show while as approx 7% faster, while
>> a modified test shows an approximate 30% speed improvement:
>>
>> Do this:
>>
>> for ($i=0;$i<10000000;$i++) {}
>>
>> v.s.:
>>
>> $i = 0;
>> while ($i++ < 10000000) {}
>

This has been asked many times, probably likewise for every language. 
Search for the same question on the C programming language for a more in
depth discussion of this and to find out why one way is faster than the
other...

Major factor: Don't forget the difference between pre and post increment
operators.  $i++ and ++$i.

For reference this is my PHP test script and results:

{{{
[EMAIL PROTECTED] tdoherty $ cat ./forwhile.php
<?
$i=0; $start = microtime(TRUE);
for ($i=0; $i<100000; ++$i) {}
echo sprintf("For pre-increment ($i): %0.3f\n",microtime(TRUE) - $start);

$i=0; $start = microtime(TRUE);
for ($i=0; $i<100000; $i++) {}
echo sprintf("For post-increment ($i): %0.3f\n",microtime(TRUE) - $start);

$i=0; $start = microtime(TRUE);
while (++$i < 100000) {}
echo sprintf("While pre-increment ($i): %0.3f\n",microtime(TRUE) - $start);

$i=0; $start = microtime(TRUE);
while ($i++ < 100000) {}
echo sprintf("While post-increment ($i): %0.3f\n",microtime(TRUE) - $start);
?>
[EMAIL PROTECTED] tdoherty $ php ./forwhile.php
For pre-increment (100000): 0.035
For post-increment (100000): 0.060
While pre-increment (100000): 0.029
While post-increment (100001): 0.056
}}}

After multiple runs I see that the for pre-increment loop is fastest. 
Note that the while loop with a post-increment runs once more than with
a pre-increment.

Everytime I run, the results are *very* different, though still fall
within similar comparitive domains.

Travis Doherty

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to