CodeIgniter, руководство пользователя к версии 1.6.1


Класс Benchmarking

В CodeIgniter есть всегда доступный класс Benchmarking, который позволяет получить время, затраченное на выполнение кода между двумя отмеченными точками в коде.

Примечание: Данный класс инициализируется приложением автоматически. Вручную инициализировать его не требуется.

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

Содержание

Использование класса Benchmark

Класс Benchmark может быть использован в контроллерах, отображениях или моделях. Процесс использования таков:

  1. Отмечаем стартовую точку
  2. Отмечаем конечную точку
  3. Вызываем функцию elapsed_time для просмотра результата

Пример кода:

$this->benchmark->mark('code_start');

// Тут ещё какой–то код…

$this->benchmark->mark('code_end');

echo $this->benchmark->elapsed_time('code_start', 'code_end');

Примечание: Метки "code_start" и "code_end" произвольны. Вы можете использовать любые метки. Также, вы можете выставить несколько меток. Пример:

$this->benchmark->mark('dog');

// Тут ещё какой–то код…

$this->benchmark->mark('cat');

// Тут ещё какой–то код…

$this->benchmark->mark('bird');

echo $this->benchmark->elapsed_time('dog', 'cat');
echo $this->benchmark->elapsed_time('cat', 'bird');
echo $this->benchmark->elapsed_time('dog', 'bird');

Профилирование меток

Если вы хотите, чтобы данные замера были доступны классу Profiler, все метки должны быть парными. Имя стартовой метки должно заканчиваться на _start, а конечной метки — на _end. Пример:

$this->benchmark->mark('my_mark_start');

// Тут ещё какой–то код…

$this->benchmark->mark('my_mark_end');

$this->benchmark->mark('another_mark_start');

// Тут ещё какой–то код…

$this->benchmark->mark('another_mark_end');

Подробнее профилирование описано на соответствующей странице.

Вывод общего времени выполнения

Если вы хотите отобразить суммарное время, прошедшее с момента начала работы CodeIgniter до момента отдачи браузеру, поместите следующий код в один из ваших шаблонов отображения:

<?=$this->benchmark->elapsed_time();?>

Заметьте, что для вычисления прошедшего времени используется та же функция, что и предыдущих примерах. Разница в том, что вы не указываете какие–либо параметры. При отсутствии параметров CodeIgniter не останавливает замер до финального вывода в браузер. Не важно, где вы вызвали функцию: таймер будет работать до самого конца.

Альтернативный способ отобразить затраченное время, в том случае, если вы не хотите использовать PHP–код, — использовать псевдо–переменную в файлах отображения:

{elapsed_time}

Примечание: Если вы хотите замерить что–либо в вашем контроллере — задавайте свои стартовые и конечные метки.

Вывод количества потребляемой памяти

Если PHP на вашем сервере собран с опцией --enable-memory-limit, вы можете вывести количество потребляемой приложением памяти используя следующий код в одном из файлов отображений:

<?=$this->benchmark->memory_usage();?>

Примечание: Данная функция может быть использована только в отображениях. Значение отражает суммарную память, используемую всем приложением.

Альтернативный способ отобразить потребление памяти, в том случае, если вы не хотите использовать PHP:

{memory_usage}