<?php
/*
indraginanjar@gmail.com
17 Januari 2014
*/
function local_var($num){
$local_num = $num;
return $local_num + 3;
}
function function_param($num){
return $num + 3;
}
function global_var($num){
global $number;
return $number + 3;
}
$number = 4;
$count = 1000000;
$lengths = array();
$local_start = microtime(true);
for($i = 0; $i < $count; $i++){
local_var($number);
}
$local_end = microtime(true);
$lengths = array_merge($lengths, array('local_var' => $local_time = $local_end - $local_start));
$function_param_start = microtime(true);
for($i = 0; $i < $count; $i++){
function_param($number);
}
$function_param_end = microtime(true);
$lengths = array_merge($lengths, array('function_param' => $function_param_end - $function_param_start));
$global_var_start = microtime(true);
for($i = 0; $i < $count; $i++){
global_var($number);
}
$global_var_end = microtime(true);
$lengths = array_merge($lengths, array('global_var' => $global_var_end - $global_var_start));
echo "# Test:\n\n";
echo "## Using Local Variable\n";
echo ' start:', $local_start, "\n";
echo ' end:', $local_end, "\n\n";
echo ' length:', $lengths['local_var'], "\n\n";
echo "## Using Function Parameter Only\n";
echo ' start:', $function_param_start, "\n";
echo ' end:', $function_param_end, "\n\n";
echo ' length:', $lengths['function_param'], "\n\n";
echo "## Using Global Variable\n";
echo ' start:', $global_var_start, "\n";
echo ' end:', $global_var_end, "\n\n";
echo ' length:', $lengths['global_var'], "\n\n";
asort($lengths);
echo "# Result:\n";
$fastest = current($lengths);
$no = 1;
echo $no, '. ', key($lengths), '(fastest): ', current($lengths), "\n";
while($running_time = next($lengths)){
echo ++$no, '. ', key($lengths), ': ', $running_time, ' : +', $running_time - $fastest, "\n";
}
?>
Hasil
# Test: ## Using Local Variable start:1389998959.5745 end:1389998960.8139 length:1.2393939495087 ## Using Function Parameter Only start:1389998960.8139 end:1389998961.9497 length:1.1357579231262 ## Using Global Variable start:1389998961.9497 end:1389998963.1976 length:1.2478859424591 # Result: 1. function_param(fastest): 1.1357579231262 2. local_var: 1.2393939495087 : +0.10363602638245 3. global_var: 1.2478859424591 : +0.11212801933289
Jika di running dengan perintah time, seperti "time php benchmark-allocation.php" akan didapat lamanya benchmark ini berjalan:
real 0m3.655s user 0m3.356s sys 0m0.288s
Komentar
Posting Komentar