| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Измерение скорости работы скрипта
Для каждого программиста рано или поздно становится важным определение "узких мест" при работе скрипта или всего проекта. Особенно когда проект разростается - отслеживать самые медленные точки тяжело или практически невозможно. Потому очень важно иметь удобный инструмент для мониторинга таких вещей. В этой статье я предлагаю написать класс, который будет отслеживать время работы отдельных участков PHP скриптов. Сначала создадим сам класс, а потом сможем его применять во всех наших скриптах, для которых нужно установить время работы. Итак, класс выглядит следующим образом: <?php
set_time_limit(0);
class timer
{
private $start_time;
private function get_time()
{
list($usec, $seconds) = explode(" ", microtime());
return ((float)$usec + (float)$seconds);
}
function start_timer()
{
$this->start_time = $this->get_time();
}
function end_timer()
{
return ($this->get_time() - $this->start_time);
}
}
?>
Назовем наш класс "timer.class.php" и
рассмотрим его поближе. Первая строка "set_time_limit(0);"
определяет максимальное время работы нашего
скрипта. Т.к. нам нужна максимальная точность -
передаем в каестве параметра ноль. Дальше идет
собственно обьявление класса timer. Ниже мы
видим обьявление трех методов класса:
Гораздо интереснее можно использовать этот класс. Кроме того это делать можно почти в каждом большом скрипте, достаточно всего лишь подключить ваш класс "timer.class.php" к скрипту, время работы которого вы хотите измерить. Для примера давайте измерим время выполнения двух методов сложения чисел: Мы узнаем что работает быстрее:
<?php
include("timer.class.php");
$timer = new timer();
$z = 0;
//---------------------
$timer->start_timer();
//---------------------
for($i=0; $i<10000; $i++)
{
$z += $i;
}
$z = 0;
//----------------------
$firstTime = $timer->end_timer();
//----------------------
echo('Код "$z += $i" работал '.$firstTime.'с.<br />');
//---------------------
$timer->start_timer();
//---------------------
for($i=0; $i<10000; $i++)
{
$z = $z+$i;
}
$z = 0;
//----------------------
$secondTime = $timer->end_timer();
//----------------------
echo('Код "$z = $z+$i" работал '.$secondTime.'с.<br />');
?>
У меня получился такой результат:
Код "$z += $i" работал 0.00566005706787с. Код "$z = $z+$i" работал 0.00641202926636с.Получается что по производительности эти два варианта практически равны. Если же рассмотреть использование нашего класса здесь - то оно также не является сложным. Сначала мы подключаем класс используя функцию include, далее создаем обьект класса: $timer = new timer();. Потом "засекаем" текущее время используя $timer->start_timer(); после этого могут идти функции/методы вашего кода которые вы хотите проверить на скорость работы (я использовал цикл на 10 000 итераций для примера), а затем получаем время работы блока кода используя код $firstTime = $timer->end_timer();. После чего в нашей переменной $firstTime будет содержаться время работы первоко цикла. Как вы видите сам класс довольно простой, и его использование не вызывает никаких трудностей. Спасибо за внимание :)
Рубрика: PHP
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|