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');
?>