Your reply piqued my curiosity so I whipped together a script that times the
execution of a foreach(), a while() and a for() loop executing the same
commands. The results were rather surprising in some ways but not really
overall.
The while() loop is, as you stated, is quicker than a foreach() loop.
However, the for() loop is the fastest of all three. Below are the results
of three tests:
Timed foreach() loop: 0.00766 sec.
Timed while() loop: 0.00689 sec.
Timed for() loop: 0.00676 sec.
Timed foreach() loop: 0.00768 sec.
Timed while() loop: 0.00688 sec.
Timed for() loop: 0.00677 sec.
Timed foreach() loop: 0.00770 sec.
Timed while() loop: 0.00689 sec.
Timed for() loop: 0.00674 sec.
The loops were parsing the text in a text file.
Again, we're talking about going down to 13/100,000th-second as an average
speed gain with a for() loop over a while() loop. The average difference
between foreach() and while() is considerably larger, approximately
79/100,000th. But again, you'd have to run through the complete execution
of the loop (53 lines of text in the file) 1,266 times to lose a single
second between foreach() and while(). A minimal gain in speed; I was just
mentioning it because it's easier to read a foreach() loop. But in all
fairness, because the for() loop was quickest, here is the code converted to
for():
function check_file($filename) {
if (!$lines = file($filename)) {
return false;
}
for ($i = 0; $ < sizeof($lines); $i++) {
$num_pipes = substr_count($lines[$i], '|');
if ($num_pipes < 2 || $num_pipes > 4) {
return false;
}
}
return true;
}
I performed the test purely out of curiosity, not pride :) Thanks for the
idea though, it was interesting to see the results.
Mike Frazer
PS - If you'd like the code for my Timer class, email me off-list and I'll
send it to you.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php