Re: performance with looping and count()ing
| From: | Tom Rogers | Date: | Sat, 27 Mar 2004 02:37:36 +0000 |
| Subject: | Re: performance with looping and count()ing | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-181600@lists.php.net to get a copy of this message | ||
Hi,
Saturday, March 27, 2004, 4:45:38 AM, you wrote:
CWP> hi.
CWP> ok, so i've always been under the impression that count()ing during the
CWP> expression of a loop was much inefficient when compared to count()ing
CWP> just before the loop expression.
CWP> GOOD:
CWP> <?php
CWP> $the_array_cnt = count($the_array);
CWP> for($i = 0; $i < $the_array_cnt; $i++)
CWP> {
CWP> ...
CWP> }
?>>
CWP> BAD:
CWP> <?php
CWP> for($i = 0; $i < count($the_array); $i++)
CWP> {
CWP> ...
CWP> }
?>>
CWP> but then i did some tests and found that only on very large arrays is
CWP> there any difference between the two. count()ing outside of the loop was
CWP> only marginally better.
CWP> i also tried performing the same operation using foreach() and it was
CWP> slightly faster than count()ing within the loop and slightly slower than
CWP> count()ing outside the loop.
CWP> somone pointed out in a post to a message board that php handles the
CWP> result of a count() in a special way and so it therefore does not need
CWP> to count the array more than once each pass through the loop? can
CWP> someone confirm?
CWP> thanks,
CWP> chris.
CWP> --
CWP> PHP General Mailing List (http://www.php.net/)
CWP> To unsubscribe, visit: http://www.php.net/unsub.php
Depends on your code logic, if $the_array gets modified in the loop
then you have to check it on each pass. If not, efficiency would
suggest doing it before the loop. You can always do the 1 line
version:
for ($i=0,$j=count($the_array);$i<$j;$i++){
--
regards,
Tom