Логирование затрат на исполнение кода
Небольшой скрипт-утилитка для логирования затрат времени и памяти на исполнение кода.
Дата публикации
5 Сентября 2019
Дата изменения
24 Сентября 2019
Уникальных просмотров
903
Оглавление
Часто появляется необходимость проверить за сколько времени выполняется код и сколько памяти было им использовано.
Решение
Для реализации данной утилитки, мы воспользуемся двумя встроенными в PHP функциями:
memory_get_usage()
— возвращает количество памяти выделенной PHP.microtime()
— возвращает текущую метку времени Unix с микросекундами.
Далее мы создадим свою функцию 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);
Результат будет примерно таким:
Время работы: 0,1198 s
Время запросов: 0,1198 s
Количество запросов: 25
Источник: cache
Время запросов: 0,1198 s
Количество запросов: 25
Источник: cache