AUTORE
andr3a
DESCRIZIONE
Test per confrontare le performance dei principali metodi per svolgere operazioni a seconda di determinate condizioni.
CATEGORIA
PERFORMANCE/CHECKS
DIPENDENZE
CODICE
Codice PHP:
<?php
$class = 'IfElifElseSwitchTernaryTimeUnitTest';
$iterations = 10000;
$methods = array
(
'TestIfElifElse' => 'Test if elseif and else',
'TestSwitch' => 'Test switch',
'TestTernary' => 'Test double ternary operator'
);
$dataToTest = array();
for($index = 0; $index < $iterations; $index++)
$dataToTest[] = $index;
class IfElifElseSwitchTernaryTimeUnitTest
{
public static function TestIfElifElse($Iterations, $DataToTest)
{
$duration = 0;
for($iteration = 0; $iteration < $Iterations; $iteration++)
{
$startTime = microtime(true);
if($DataToTest[$iteration] == null)
$DataToTest[$iteration] = null;
elseif($DataToTest[$iteration] == false)
$DataToTest[$iteration] = false;
else
$DataToTest[$iteration] = true;
$duration += microtime(true) - $startTime;
}
return $duration;
}
public static function TestSwitch($Iterations, $DataToTest)
{
$duration = 0;
for($iteration = 0; $iteration < $Iterations; $iteration++)
{
$startTime = microtime(true);
switch($DataToTest[$iteration]) {
case null:
$DataToTest[$iteration] = null;
break;
case false:
$DataToTest[$iteration] = false;
break;
default:
$DataToTest[$iteration] = true;
break;
}
$duration += microtime(true) - $startTime;
}
return $duration;
}
public static function TestTernary($Iterations, $DataToTest)
{
$duration = 0;
for($iteration = 0; $iteration < $Iterations; $iteration++)
{
$startTime = microtime(true);
$DataToTest[$iteration] = $DataToTest[$iteration] == null ? null : $DataToTest[$iteration] == false ? false : true;
$duration += microtime(true) - $startTime;
}
return $duration;
}
}
require_once('TimeUnitTesting.php');
?>