Время выполнения скрипта
- Способ #1
Функция microtime() с переданным значением true возвращает число секунд, прошедших с полуночи 01.01.1970, причём это значение подсчитано до сотых долей секунды. Затем идёт сам скрипт (исполняемый код), который мы и проверяем. В последней строке будет разница между текущим временем (после выполнения скрипта) и тем, что мы зафиксировали при старте скрипта. Разница времени после выполнения скрипта и времени до начала его работы, и есть время выполнения скрипта.
$start = microtime(true); // исполняемый код ... echo '<br>==============================================================='; echo 'Время выполнения скрипта: ' . (microtime(true) - $start) . ' sec.';
Результат:
Время выполнения скрипта: 0.16499996185303 sec.
- Способ #2
Можно вместо $start = microtime(true) брать значение из переменной $_SERVER['REQUEST_TIME_FLOAT'], которая содержит время запроса к серверу. Вычисление времени выполнения происходит за исполняемым кодом.
// исполняемый код ... $time = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']; echo $time . ' sec.';
- Способ #3
Если на сервере установлен Xdebag:
// исполняемый код ... echo xdebug_time_index() . ' sec.';
Класс для получения времени выполнения скрипта
Очень простой класс, который можно использовать для получения времени выполнения скрипта PHP. Имеет приватное статическое свойство $start, в которой будет храниться время начала выполнения скрипта и имеющее значение по умолчанию $start = .0. Метод start() присваивает значение, которое вернула функция microtime свойству $start. Метод finish() возвращает разницу между текущим временем (после выполнения скрипта) и тем, что мы зафиксировали при старте скрипта (присвоили значение в $start).
class Timer { /** * @var float время начала выполнения скрипта */ private static $start = .0; /** * Начало выполнения */ public static function start() { self::$start = microtime(true); } /** * Разница между текущей меткой времени и меткой self::$start * @return float */ public static function finish() { return microtime(true) - self::$start; } }
Пример использования класса Timer(). Заполним массив миллионом случайных чисел:
Timer::start(); for ($i = 0; $i < 1000000; $i++) { $array[] = rand(0, 1000000); } echo 'Время выполнения скрипта: ' . Timer::finish() . ' sec.';
Объем использованной памяти
Функция memory_get_usage() возвращает количество памяти в байтах, которое было выделено PHP скрипту на данный момент. Принцип очень похож на измерение времени выполнения скрипта. Здесь тоже есть, как бы, стартовое состояние и и разница между текущим состоянием и стартовым.
$memory = memory_get_usage(); // исполняемый код ... echo 'Скушано памяти: ' . (memory_get_usage() - $memory) . ' байт';
В Xdebug есть функция xdebug_memory_usage(), которая возвращает тот же результат:
// исполняемый код ... echo 'Скушано памяти: ' . xdebug_memory_usage() . ' байт';
- Конвертация результата в килобайты и мегабайты
$memory = memory_get_usage(); for ($i = 0; $i < 1000000; $i++) { $array[] = rand(0, 1000000); } $memory = memory_get_usage() - $memory; // Конвертация результата в килобайты и мегабайты $i = 0; while (floor($memory / 1024) > 0) { $i++; $memory /= 1024; } $name = array('байт', 'КБ', 'МБ'); echo 'Скушано памяти: ' . round($memory, 2) . ' ' . $name[$i];
Результат:
Скушано памяти: 80.29 МБ