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

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