Оглавление

Часто появляется необходимость проверить за сколько времени выполняется код и сколько памяти было им использовано.

Решение

Для реализации данной утилитки, мы воспользуемся двумя встроенными в PHP функциями:

Далее мы создадим свою функцию file_size, для перевода количества памяти в подходящие единицы измерения (для нашего удобства). В конце кода, еще раз вызываем функции, и вычием значение времени и памяти, которые мы получили в самом начале скрипта.

function file_size($size)
{
    $filesizename = array(
      ' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
    return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) .$filesizename[$i] : '0 Bytes';
}
$mem_start = memory_get_usage();
$time_start = microtime(true);

Ваш PHP код

echo 'Время выполнения скрипта: '. round(microtime(true) - $time_start, 4) .' сек.'.'<br>';
echo 'Скрипт сожрал памяти: '. file_size(memory_get_usage() - $mem_start);

Таким образом, мы получим чистое время выполнения скрипта и количество памяти, которое использовал PHP.

Применение

Теперь, просто внутрь скрипта прописываем исполняемый код и запускаем.

function file_size($size)
{
    $filesizename = array(
      ' Bytes', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
    return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) .$filesizename[$i] : '0 Bytes';
}
$mem_start = memory_get_usage();
$time_start = microtime(true);

for ($i = 1; $i <= 10000; $i++) {
    $pls = array('param' =>$i, 'value' => rand());
    print_r($pls);
}

echo 'Время выполнения скрипта: '. round(microtime(true) - $time_start, 4) .' сек.'.'<br>';
echo 'Скрипт сожрал памяти: '. file_size(memory_get_usage() - $mem_start);

Результат будет примерно таким:

Логирование затрат на исполнение кода - пример