我有两个函数,我想比较它们的执行时间:
function subject_one() {
$str = preg_match_all( ...[SNIP]... );
// ...[SNIP]...
return $str;
}
function subject_two() {
$reader = new XMLReader;
$writer = new XMLWriter;
// ...[SNIP]...
echo $str;
}
是否可以编写一个函数来执行此操作?
例如:
function benchmark_two_functions( $first_function, $second_function ) {
// do stuff
return $length_of_time_to_complete_each_function
}
我见过的大多数示例都会在脚本的顶部和底部添加代码,如果可能,我希望避免使用。
答案 0 :(得分:11)
试试这个
function subject_one(){
sleep(1);
}
function subject_two(){
sleep(5);
}
/* Result should be ~4 */
print benchmark_two_functions('subject_one','subject_two');
function getmicrotime() {
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
function benchmark_two_functions($first_function, $second_function){
$start = getmicrotime();
$first_function();
$exec_time_first = getmicrotime() - $start;
$start = getmicrotime();
$second_function();
$exec_time_second = getmicrotime() - $start;
return $exec_time_first - $exec_time_second;
}
答案 1 :(得分:0)
答案 2 :(得分:0)
PEAR has a Benchmark库。它工作得很好,但如果您具有服务器的root访问权限并且可以安装它,那么XDebug可能是更好的工具。