On Sun, 2002-02-03 at 12:12, Mike Frazer wrote:
> 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:

Odd.. I get the opposite result:

Running test_foreach() 5000 times...2.6176570653915 seconds
Running test_for() 5000 times...3.0155370235443 seconds
Running test_while() 5000 times...2.0656290054321 seconds

Results: 
test_foreach_1: 2.6176570653915
test_for_2: 3.0155370235443
test_while_3: 2.0656290054321

Using the following code:

<?php
error_reporting(E_ALL);

function test_while() {
    global $upload_file;
    reset($upload_file);
    foreach ($upload_file as $line) {
        $num_pipes = substr_count($line, '|');
        if ($num_pipes < 2 || $num_pipes > 4) {
            return false;
        }
    }
    return true;
}


function test_foreach() {
    global $upload_file;
    reset($upload_file);
    while (list(, $line) = each($upload_file)) {
        $num_pipes = substr_count($line, '|');
        if ($num_pipes < 2 || $num_pipes > 4) {
            return false;
        }
    }
    return true;
}


function test_for() {
    global $upload_file;
    for ($i = 0; $i < count($upload_file); $i++) {
        $num_pipes = substr_count($upload_file[$i], '|');
        if ($num_pipes < 2 || $num_pipes > 4) {
            return false;
        }
    }
    return true;
}

$filename = 'testpipes.txt';
$upload_file = file($filename);

speedtest(array('test_foreach', 
                'test_for',
                'test_while'), 5000);

?>


Curioser and curiouser....


Torben

-- 
 Torben Wilson <[EMAIL PROTECTED]>
 http://www.thebuttlesschaps.com
 http://www.hybrid17.com
 http://www.inflatableeye.com
 +1.604.709.0506


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

Reply via email to