AUTORE
andr3a

DESCRIZIONE
Test per confrontare le performance i vari metodi più o meno usati per prendere il solo valore da un array popolato in sequenza NON casuale (ed ovviamente prendendo il valore o modificandolo, come fossero veri loops)

CATEGORIA
PERFORMANCE/LOOP

CODICE
Codice PHP:
<?php
$class 
'ForEachWhileFor';
$iterations 1000;
$methods = array
(
    
'_whileEach'          => 'Test while(list() = each())',
    
'_for'                => 'Test for',
    
'_forCount'           => 'Test for using count',
    
'_forEach'            => 'Test foreach'
);

$dataToTest = array();
for(
$index 0$index 1000$index++)
    
$dataToTest[] = uniqid(rand(), true);   

class 
ForEachWhileFor
{
    public static function 
_whileEach($Iterations$DataToTest)
    {
        for(
$duration 0$iteration 0$iteration $Iterations$iteration++)
        {
            
$startTime microtime(true);
            while(list(, 
$value) = each($DataToTest))$value ' '.$value;
        
reset($DataToTest);
            
$duration += microtime(true) - $startTime;
        }
        return 
$duration;
    }
    public static function 
_for($Iterations$DataToTest)
    {
        for(
$duration 0$iteration 0$iteration $Iterations$iteration++)
        {
            
$startTime microtime(true);
            for(
$i 0$length count($DataToTest); $i $length$i++)$value ' '.$DataToTest[$i];
            
$duration += microtime(true) - $startTime;
        }
        return 
$duration;
    }
    public static function 
_forCount($Iterations$DataToTest)
    {
        for(
$duration 0$iteration 0$iteration $Iterations$iteration++)
        {
            
$startTime microtime(true);
            for(
$i 0$i count($DataToTest); $i++)$value ' '.$DataToTest[$i];
            
$duration += microtime(true) - $startTime;
        }
        return 
$duration;
    }
    public static function 
_forEach($Iterations$DataToTest)
    {
        for(
$duration 0$iteration 0$iteration $Iterations$iteration++)
        {
            
$startTime microtime(true);
        foreach(
$DataToTest as $value)$value ' '.$value;
            
$duration += microtime(true) - $startTime;
        }
        return 
$duration;
    }
}
require_once(
'TimeUnitTesting.php');
?>