Как определить быстродействие скрипта

clock Как определить быстродействие скрипта Я уже несколько месяцев серьезно занимаюсь изучением php. И теперь стараюсь сделать так, чтобы скрипт не только работал правильно, но и быстро, так как время работы скрипта – существенный параметр. Вы ведь не хотите, чтобы пользователь долго ждал? Если знать время выполнения скрипта, то можно добиваться его максимального быстродействия. Тем самым мы сегодня немного затронем тему оптимизации.

Я решил начать с определения времени. И в дальнейшем буду использовать этот приём, чтобы узнать, в какую сторону повлияло изменение кода на быстродействие скрипта.

Чтобы это реализовать, надо определить время перед началом выполнения скрипта и в конце выполнения.

Я нашёл функцию microtime(), которая возвращает кол-во секунд, прошедших с 1 января 1970 года. Причём результат достаётся в виде дробной и целой части. Если мы хотим отделить эти значения друг от друга, то надо воспользоваться функцией explode().

Тем самым мы разделим строку на части, которые вернутся в виде массива.

Для примера я написал простенький скрипт заполнения таблицы бд.

index.php

<?php

error_reporting(0);
include ‘connect.php’;
include ‘funcs.php’;

$q=0;
$min=0;
   
while($q<10) {
       
    $q++;
    $i=0;
       
    $clear_table = "TRUNCATE TABLE `time`";
    mysql_query($clear_table) or die("не удалось очистить таблицу (".mysql_error().")");
       
    $start_time = ftime();

    while($i<30000) {
       
        $i++;
        $sql2 = "INSERT INTO `time` VALUES(NULL,'$i')";
        mysql_query($sql2) or die("не удалось добавить данные в бд (".mysql_error().")");
    }
   
$end = ftime();
    $result = $end - $start_time;
    echo "<BR>".$q."-ая попытка: ".$result;
      if ($q == 1 || $result < $min) {
          $min = $result;
      }

}
echo "<BR><BR> минимальное кол-во времени: ".$min;

?>

connect.php

<?php
$sqlhost="localhost";
$sqluser="root";
$sqlpass="";
$db="time";
mysql_connect($sqlhost,$sqluser,$sqlpass) or die("не удалось соединиться ".mysql_error().")");
mysql_select_db($db) or die("не удалось выбрать бд(".mysql_error().")");
?>

funcs.php

<?php
function ftime()
{
    $timem = explode(' ',microtime());
    $res = $timem [0]+$timem [1];
    return $res;
}
?>

Расчёт времени я выделил в отдельную функцию. Как видите explode сохранила два значения в массив, элементы которого я потом просто сложил.

Как видите первый цикл while нужен, чтобы прогнать код, который нам интересен 10 раз. Так как каждый раз время отличается и нам необходимо минимальное значение. Почему минимальное? Потому что система в момент минимального времени была наименее загружена, а значит это время наиболее правдоподобно. А вообще можно было бы взять больше итераций – например, не 10, а 40. Тогда время было бы еще правдивее.

$begin_time = ftime(); здесь я запоминаю начало работы скрипта.
$end = ftime(); здесь конец работы.

$sql4 = “TRUNCATE TABLE `asd`”; здесь я делаю очистку таблицы, перед каждым новым прогоном скрипта.

$result = $end – $begin_time; потом я просто вычитаю из конечного времени начальное.

и ищу минимальное время всех попыток:
if ($q == 1 || $result < $min) {
$min = $result;
}

Как видите все предельно просто.





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



5 Ответов на “Как определить быстродействие скрипта”

  1. ekim
    Декабрь 5th, 2008

    Я нашёл функцию microtime(), которая возвращает кол-во секунд, прошедших с 1 января 1970 года. Причём результат достаётся в виде дробной и целой части. Если мы хотим отделить эти значения друг от друга, то надо воспользоваться функцией explode().

    function ftime()
    {
    $timem = explode(‘ ‘,microtime());
    $res = $timem [0]+$timem [1];
    return $res;
    }

    ненене) Не нужно таких извращений. Если функции microtime() передать аргумент TRUE, то она сразу вернет веремя в виде числа (секунды с милисекундами)
    microtime(true)

    И тогда не нужна никакая function ftime()

    $start_time = microtime(true);
    … бла-бла
    $end_time = microtime(true);

  2. novice
    Декабрь 5th, 2008

    Правильно. Только это справедливо для версии PHP5. Для версии PHP4 придется использовать ftime. Читаем документацию.

  3. ekim
    Декабрь 9th, 2008

    дейсвтительно так. просто я изначально на PHP5 пишу

  4. fealza
    Декабрь 21st, 2009

    Спасибо! Хорошая статья.
    Ещё бы узнать по возможности, сколько ресурсов памяти использует скрипт, было бы совсем замечательно…

  5. Андрей
    Декабрь 7th, 2011

    Хорошая статья. Есть кстати простой способ на [ссылка]

Оставить комментарий


© 2008 - 2012 i-novice.net | Все права защищены.