Скрипт таймера функций PHP - PullRequest
4 голосов
/ 13 ноября 2009

У меня есть две функции, время выполнения которых я хотел бы сравнить:

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
}

Большинство примеров, которые я видел, добавляют код в верхнюю и нижнюю часть скрипта, чего я бы хотел избежать, если это возможно.

Ответы [ 3 ]

11 голосов
/ 13 ноября 2009

Попробуйте это

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 голосов
/ 13 ноября 2009

В PEAR есть библиотека для профилирования PHP. Он работает довольно хорошо, но, возможно, XDebug - лучший инструмент, если у вас есть root-доступ к вашему серверу и вы можете установить его.

0 голосов
/ 13 ноября 2009

Может быть, можно использовать галочки?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...