Время выполнения скрипта

Способ #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