Подсчет время выполнения скрипта php

microtime

Функция microtime() возвращает текущую метку времени Unix с микросекундами. Эта функция доступна только на операционных системах, в которых есть системный вызов gettimeofday().

Для измерения производительности рекомендуется использовать hrtime() .

Список параметров

Если указано и установлено в true , microtime() возвратит число с плавающей точкой ( float ) вместо строки ( string ), как описано в разделе возвращаемых значений ниже.

Возвращаемые значения

По умолчанию microtime() возвращает строку ( string ) в формате «msec sec», где sec представляет собой количество секунд в виде десятичной дроби с начала эпохи Unix (1 января 1970 0:00:00 GMT), а msec — это количество микросекунд, прошедших после sec .

Если параметр as_float установлен в true , то microtime() возвратит результат в вещественном виде ( float ), представляющий собой текущее время в секундах, прошедших с начала эпохи Unix с точностью до микросекунд.

Примеры

Пример #1 Замер времени выполнения скрипта

// Спим некоторое время
usleep ( 100 );

$time_end = microtime ( true );
$time = $time_end — $time_start ;

Читайте также:  Javascript get screen size

echo «Ничего не делал $time секунд\n» ;
?>

Пример #2 Пример использования microtime() и REQUEST_TIME_FLOAT

// Выбираем время сна случайным образом
usleep ( mt_rand ( 100 , 10000 ));

// В суперглобальном массиве $_SERVER доступно значение REQUEST_TIME_FLOAT.
// Оно содержит временную метку начала запроса с точностью до микросекунд.
$time = microtime ( true ) — $_SERVER [ «REQUEST_TIME_FLOAT» ];

echo «Ничего не делал $time секунд\n» ;
?>

Смотрите также

  • time() — Возвращает текущую метку системного времени Unix
  • hrtime() — Получить системное время высокого разрешения

User Contributed Notes

  • Функции даты и времени
    • checkdate
    • date_​add
    • date_​create_​from_​format
    • date_​create_​immutable_​from_​format
    • date_​create_​immutable
    • date_​create
    • date_​date_​set
    • date_​default_​timezone_​get
    • date_​default_​timezone_​set
    • date_​diff
    • date_​format
    • date_​get_​last_​errors
    • date_​interval_​create_​from_​date_​string
    • date_​interval_​format
    • date_​isodate_​set
    • date_​modify
    • date_​offset_​get
    • date_​parse_​from_​format
    • date_​parse
    • date_​sub
    • date_​sun_​info
    • date_​sunrise
    • date_​sunset
    • date_​time_​set
    • date_​timestamp_​get
    • date_​timestamp_​set
    • date_​timezone_​get
    • date_​timezone_​set
    • date
    • getdate
    • gettimeofday
    • gmdate
    • gmmktime
    • gmstrftime
    • idate
    • localtime
    • microtime
    • mktime
    • strftime
    • strptime
    • strtotime
    • time
    • timezone_​abbreviations_​list
    • timezone_​identifiers_​list
    • timezone_​location_​get
    • timezone_​name_​from_​abbr
    • timezone_​name_​get
    • timezone_​offset_​get
    • timezone_​open
    • timezone_​transitions_​get
    • timezone_​version_​get

    Источник

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

    Чтобы вычислить время выполнения необходимо воспользоваться функцией mixed microtime([bool $get_as_float = false]) , которая возвращает текущую метку времени Юникс с микросекундами.

    Функция возвращает строку в формате «микросекунды секунды» , например 0.29687500 1384974205 , где 0.29687500 — микросекунды, 1384974205 — количество секунд с начало Эпохи Юникс.

    Если передан параметр $get_as_float = true , то функция вернет float — текущее время в секундах прошедших с начала Эпохи Юникс, с учетом микросекунд.

    Вычисляем время выполнения

    Например стоит задача заполнить массив миллионом случайных чисел и вычислить время выполнения.

    Результат

    На экране будет примерно следующее значение:

    Массив заполнялся примерно 0,77 сек.

    Клаcc Timer

    Очень удобно объявить один раз класс Timer , с методами Timer::start() и Timer::finish() .

    Пример

    Задача та же — заполнить массив миллионом случайных чисел.

    На экране будет примерно следующее:

    Массив заполнялся примерно 0,806 сек.

    Категории

    Читайте также

    • Дата вчера сегодня завтра (PHP)
    • Посчитать сколько времени прошло (PHP)
    • Количество секунд от начала дня (PHP)
    • Разница дат (PHP)
    • Преобразовать дату в секунды (PHP)
    • Количество секунд между датами (PHP)
    • Количество минут между датами (PHP)
    • Количество дней между датами (PHP)
    • Количество часов между датами (PHP)
    • Как получить TIMESTAMP дня текущей недели (PHP)
    • Установить часовой пояс (PHP)
    • Название предыдущего месяца (PHP)

    Комментарии

    Вход на сайт

    Введите данные указанные при регистрации:

    Социальные сети

    Вы можете быстро войти через социальные сети:

    Источник

    Время выполнения скрипта php и php-функций

    Сегодня узнаем, как измерять время выполнения скрипта php и отдельных php-функций.

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

    Узнать время выполнения скрипта php очень просто, сначала засекаем время начала работы скрипта в переменной $start , функция getMicrotime() просто возвращает для удобства метку времени, а в конце работы скрипта считаем разницу вычитанием getMicrotime()-$start

    function getMicrotime() return microtime(true);
    >
    $start = getMicrotime();

    //Здесь выполняется какой-то код приложения
    .

    printf(‘Время работы скрипта %.4F сек.’, getMicrotime()-$start);

    Здесь все, ну а дальше я не буду останавливаться подробно на каждой php-функции, просто для наглядности буду добавлять периодически замеры отдельных php-функций и конструкций для сравнения их времени выполнения, не просто отдельно каждую, а когда есть возможность решать задачу несколькими способами и разными функциями или конструкциями.

    Время выполнения php-функций

    Время выполнения array_key_exists() + switch() + if else()

    header(«Content-Type: text/html; charset=utf-8»);
    setlocale(LC_ALL, array(«ru_RU.CP1251», «ru_SU.CP1251», «ru_RU», «russian», «ru_SU», «ru»));

    function getMicrotime() return microtime(true);
    >

    $start = getMicrotime();
    for ($i=0; $i foreach($arData as $key => $arField)
    if(array_key_exists(‘id’,$arField))
    $result = true;
    elseif(array_key_exists(‘available’,$arField))
    $result = true;
    elseif(array_key_exists(‘url’,$arField))
    $result = true;
    elseif(array_key_exists(‘price’,$arField))
    $result = true;
    elseif(array_key_exists(‘oldprice’,$arField))
    $result = true;
    >
    >
    printf(‘array_key_exists = %.4F сек.
    ‘, getMicrotime()-$start);

    $start = getMicrotime();
    for ($i=0; $i foreach($arData as $key => $arField)
    switch($key)
    case ‘id’:
    $result = true;
    break;
    case ‘available’:
    $result = true;
    break;
    case ‘url’:
    $result = true;
    break;
    case ‘price’:
    $result = true;
    break;
    case ‘oldprice’:
    $result = true;
    break;
    >
    >
    >
    printf(‘switch = %.4F сек.
    ‘, getMicrotime()-$start);

    $start = getMicrotime();
    for ($i=0; $i foreach($arData as $key => $arField)
    if($key == ‘id’)
    $result = true;

    if($key == ‘available’)
    $result = true;

    if($key == ‘price’)
    $result = true;

    if($key == ‘oldprice’)
    $result = true;
    >
    >
    printf(‘if else (1) = %.4F сек.
    ‘, getMicrotime()-$start);

    $start = getMicrotime();
    for ($i=0; $i foreach($arData as $key => $arField)
    if($key == ‘id’)
    $result = true;
    elseif($key == ‘available’)
    $result = true;
    elseif($key == ‘url’)
    $result = true;
    elseif($key == ‘price’)
    $result = true;
    elseif($key == ‘oldprice’)
    $result = true;
    >
    >
    printf(‘if else (2) = %.4F сек.
    ‘, getMicrotime()-$start);
    ?>

    #

    Результат

    Очень полезно знать, часто встречающиеся ситуации, условие if else(2) самое быстрое.

    Время выполнения str_ireplace() + preg_replace()

    header(«Content-Type: text/html; charset=utf-8»);
    setlocale(LC_ALL, array(«ru_RU.CP1251», «ru_SU.CP1251», «ru_RU», «russian», «ru_SU», «ru»));

    $text=’ZTE мобильные Телефоны ZTE Blade GF3 (2 Sim-карты,4.5″, 854×480,2 Камеры: 8,8 ГБ,GPS,Wi-Fi, Bluetooth,Android 5.0,черный телефон)’;

    function getMicrotime() return microtime(true);
    >

    $start = getMicrotime();
    for ($i=0; $i $text1 = str_ireplace(array(‘z’,’Тел’,’8′), array(‘*’), $text);
    >
    printf(‘str_ireplace(1) = %.4F сек.
    ‘, getMicrotime()-$start);

    $start = getMicrotime();
    for ($i=0; $i $text1 = str_ireplace(‘z’, ‘*’, $text);
    $text1 = str_ireplace(‘Тел’, ‘*’, $text);
    $text1 = str_ireplace(‘8’, ‘*’, $text);
    >
    printf(‘str_ireplace(3) = %.4F сек.
    ‘, getMicrotime()-$start);

    $start = getMicrotime();
    for ($i=0; $i $text1 = preg_replace(‘#z|Тел|8#i’, ‘*’, $text);
    >
    printf(‘preg_replace = %.4F сек.
    ‘, getMicrotime()-$start);
    ?>

    #

    Результат

    Часто читали на форумах, что preg_replace() очень медленный?)
    А ведь, в каких-то ситуациях он и правда медленней str_ireplace() , а в каких-то наоборот, в разы быстрей, проверьте, убедитесь.

    Заключение

    Как видим, все надо проверять на деле, иначе приложение по нашей глупости или банальной лени может оказаться таким медленным, съедать у сервера всю память и нагружать процессор до красного каления.

    Источник

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

    Несколько способов узнать время выполнения скрипта PHP и затраченный объем памяти при выполнении этого скрипта.

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

    Способ #1

    Функция microtime() с переданным значением true возвращает число секунд, прошедших с полуночи 01.01.1970 , причём это значение подсчитано до сотых долей секунды. Затем идёт сам скрипт (исполняемый код), который мы и проверяем. В последней строкой будет разница между текущим временем (после выполнения скрипта) и тем, что мы зафиксировали при старте скрипта. Разница времени после выполнения скрипта и времени до начала его работы, и есть время выполнения скрипта.

    $start = microtime(true); // исполняемый код . echo '
    ==============================================================='; 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.';

    Способ #4

    Можно подсчитать среднее значение выполнения скрипта и записать результат в логи:

    $start = microtime(true); // исполняемый код . $time = round(microtime(true) - $start, 3); $f = fopen('time.log', 'a'); fwrite($f, $time . PHP_EOL); fclose($f); $log = file('time.log'); $result = round(array_sum($log) / count($log), 3); echo $result . ' sec.';

    Класс для получения времени выполнения скрипта

    Очень простой класс, который можно использовать для получения времени выполнения скрипта PHP. Имеет приватное статическое свойство $start , в которой будет храниться время начала выполнения скрипта и имеющее значение по умолчанию $start = .0 . Метод start() присваивает значение, которое вернула функция microtime свойству $start . Метод finish() возвращает разницу между текущим временем (после выполнения скрипта) и тем, что мы зафиксировали при старте скрипта (присвоили значение в $start ).

     /** * Разница между текущей меткой времени и меткой self::$start * @return float */ public static function finish() < return microtime(true) - self::$start; >>
    Timer::start(); // исполняемый код . echo 'Время выполнения скрипта: ' . Timer::finish() . ' sec.'; // =================================== // Пример использования класса 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() . ' байт';
    Скушано памяти: 36018960 байт

    Конвертация результата в килобайты и мегабайты

    $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];

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

    Timer::start(); $memory = memory_get_usage(); // начало исполняемого кода for ($i = 0; $i < 1000000; $i++) < $array[] = rand(0, 1000000); >// конец исполняемого кода $memory = memory_get_usage() - $memory; $name = array('байт', 'КБ', 'МБ'); $i = 0; while (floor($memory / 1024) > 0) < $i++; $memory /= 1024; >echo 'Время выполнения скрипта: ' . Timer::finish() . ' sec.
    '; echo 'Скушано памяти: ' . round($memory, 2) . ' ' . $name[$i];
    Время выполнения скрипта: 0.79099988937378 sec. Скушано памяти: 34 МБ

    Время выполнения скрипта и объём потреблённой памяти в Yii2

    Вывести время выполнения скрипта и объём потреблённой памяти в Yii2:

    echo 'getElapsedTime()) , 'с. ' . round(memory_get_peak_usage()/(1024*1024), 2) . 'МБ -->';

    Источник

Оцените статью