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