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