PHP 基准测试函数计时器脚本

PHP benchmark functions timer script

提问人:Jeff 提问时间:11/13/2009 更新时间:11/13/2009 访问量:768

问:

我有两个函数,我想比较它们的执行时间:

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
}

我见过的大多数示例都在脚本的顶部和底部添加了代码,如果可能的话,我想避免这种情况。

PHP的

评论


答:

0赞 dusoft 11/13/2009 #1

也许可以使用TICKS?

http://sk2.php.net/manual/en/function.register-tick-function.php

0赞 Björn 11/13/2009 #2

PEAR 有一个用于 PHP 分析的 Benchmark 库。它运行良好,但如果您对服务器具有root访问权限并且可以安装它,也许XDebug是一个更好的工具。

11赞 vdrmrt 11/13/2009 #3

试试这个

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;
}

评论

0赞 Jeff 11/15/2009
我想知道如何修改该函数以多次运行?benchmark_two_functions()subject_one()subject_two()