<?php

ini_set
('max_execution_time'6);

//To test
//
//sizeof vs count
//is_int vs is_integer vs is_long
//chop vs rtrim
//doubleval vs floatval
//fwrite vs fputs
//is_float vs is_real vs is_double
//ini_alter vs ini_set
//implode vs join
//current vs pos
//strchr vs strstr


$test1 0;
$test2 0;

$limit 1000000;








//
//sizeof vs count
//

$test1 0;
$test2 0;

//create test array
$y 0;
$test_array = array();
while (
$y 100000) {
    
$test_array[] = $y;
    
$y++;
}

//Test1
$x 0;
$test_var 0;
$start_time microtime(TRUE);

do { 
$x++; $test_var sizeof($test_array); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test2
$x 0;
$test_var 0;
$start_time microtime(TRUE);

do { 
$x++; $test_var count($test_array); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);



report('sizeof''count'$test1$test2);





//
//is_int vs is_integer
//

$test1 0;
$test2 0;

//int
$int 10;

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var is_int($int); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var is_integer($int); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);



report('is_int''is_integer'$test1$test2);





//
//chop vs rtrim
//

$test1 0;
$test2 0;

//int
$string 'some test followed by a long gap       ';

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var chop($string); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var rtrim($string); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);



report('chop''rtrim'$test1$test2);




//
//doubleval vs floatval
//

$test1 0;
$test2 0;

//int
$string '12.5436 test';

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var doubleval($string); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var floatval($string); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);



report('doubleval''floatval'$test1$test2);



//
//fwrite vs fputs
//

$test1 0;
$test2 0;

//setup
$string '12.5436 test';
$file 'test_file.txt';
$handle fopen($file'a');

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var fwrite($handle$string); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test2
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; $test_var fputs($handle$string); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

fclose($handle);

report('fwrite''fputs'$test1$test2);



//
//ini_alter vs ini_set
//

$test1 0;
$test2 0;

//Test1
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; ini_alter('max_execution_time'60); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test2
$x 0;
$test_var FALSE;
$start_time microtime(TRUE);

do { 
$x++; ini_set('max_execution_time'60); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);



report('ini_alter''ini_set'$test1$test2);




//
//implode vs join
//

$test1 0;
$test2 0;

//create test array
$y 0;
$some_text "It's some text";
$test_array = array();
while (
$y 100) {
    
$test_array[] = $some_text;
    
$y++;
}

//Test1
$x 0;

$start_time microtime(TRUE);

do { 
$x++; $test_var implode(' '$test_array); } while ($x<$limit);

$end_time microtime(TRUE);
$test1 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);

//Test2
$x 0;

$start_time microtime(TRUE);

do { 
$x++; $test_var join(' '$test_array); } while ($x<$limit);

$end_time microtime(TRUE);
$test2 = ($end_time $start_time);
unset(
$x);
unset(
$y);
unset(
$start_time);
unset(
$end_time);
unset(
$test_var);



report('implode''join'$test1$test2);







function 
report ($label1$label2$time1$time2) {
    
    echo 
"<strong>$label1 vs $label2</strong><br />";
    
    echo 
$label1,': '$time1' seconds<br />';
    echo 
$label2,': '$time2' seconds<br />';
    
    
$diff $time1 $time2;
    
$posdiff sqrt($diff $diff);
    
    if (
$time1 >$time2) {
        
$pc $posdiff $time2;
    } else {
        
$pc $posdiff $time2;
    }
    
$pc *= 100;
    
    echo 
'Time saved: ',$posdiff' seconds; ',$pc'%<br />';

}

?>