$function) { if (!function_exists($function)) unset($mathFunctions[$key]); } for ($i=0; $i < $count; $i++) { foreach ($mathFunctions as $function) { $r = call_user_func_array($function, array($i)); } } return number_format(microtime(true) - $time_start, 3); } function test_StringManipulation($count = 100000) { $time_start = microtime(true); $stringFunctions = array("addslashes", "chunk_split", "metaphone", "strip_tags", "md5", "sha1", "strtoupper", "strtolower", "strrev", "strlen", "soundex", "ord"); foreach ($stringFunctions as $key => $function) { if (!function_exists($function)) unset($stringFunctions[$key]); } $string = "the quick brown fox jumps over the lazy dog"; for ($i=0; $i < $count; $i++) { foreach ($stringFunctions as $function) { $r = call_user_func_array($function, array($string)); } } return number_format(microtime(true) - $time_start, 3); } function test_Loops($count = 10000000) { $time_start = microtime(true); for($i = 0; $i < $count; ++$i); $i = 0; while($i < $count) ++$i; return number_format(microtime(true) - $time_start, 3); } function test_IfElse($count = 10000000) { $time_start = microtime(true); for ($i=0; $i < $count; $i++) { if ($i == -1) { } elseif ($i == -2) { } else if ($i == -3) { } } return number_format(microtime(true) - $time_start, 3); } $numtimes=$_GET["numtimes"]; if ($numtimes <=0) { $numtimes = 1; } if ($numtimes>10) { $numtimes =10; } $functions = get_defined_functions(); $line = str_pad("-",56,"-"); echo "
\n$line\n|".str_pad("PHP BENCHMARK SCRIPT",54," ",STR_PAD_BOTH)."|\n$line\nStart : ".date("Y-m-d H:i:s")."\nServer : {$_SERVER['SERVER_NAME']}@{$_SERVER['SERVER_ADDR']}\nPHP version : ".PHP_VERSION."\nPlatform : ".PHP_OS. "\n$line\n"; for ($xrun=1;$xrun<=$numtimes;$xrun++) { $total = 0; foreach ($functions['user'] as $user) { if (preg_match('/^test_/', $user)) { $total += $result = $user(); echo "Test #".$xrun." ".str_pad($user, 33) . " : " . sprintf("%5.2f",$result) ." seconds\n"; } } $totaltime = sprintf("%5.2f",$totaltime + $total); if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { $serverphpload = 0; } else { $serverphpload = sys_getloadavg(); $serverload = sprintf("%5.2f",$serverphpload[0]); $tserverload=sprintf("%5.2f",$tserverload+$serverload); $results[]=sprintf("%5.2f",$total); printf(""; echo "You can download this script here and test it on your own server (requires PHP 5)."; echo "
Server time : %5.02f seconds",$total); printf("
Server load (now) : %5.02f",$serverload); } echo "
".$line."\n"; echo str_repeat(' ',1024*64); // for flush to work in IE... echo "\n"; ob_flush(); flush(); } $besttime = min($results); $worsttime= max($results); if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { $serverphpload = 0; } else { $serverphpload = sys_getloadavg(); } printf("
Total time : %5.02f seconds",$totaltime); if ($numtimes>1) { $avgload = sprintf("%5.2f",$tserverload/$numtimes); printf("
Average per test : %5.02f seconds",$totaltime/$numtimes); printf("
Best time : %5.02f seconds",$besttime); printf("
Worst time : %5.02f seconds
",$worsttime); printf("
Total server load : %5.02f",$tserverload); printf("
Average server load : %5.02f",$avgload); } printf("
Average load last 5 minutes : %5.02f",$serverphpload[1]); printf("
Average load last 15 minutes : %5.02f",$serverphpload[2]); $memorylimit = ini_get("memory_limit"); printf("
PHP memory limit : %5.00f Mbyte
",$memorylimit); echo "