CodeIgniter User Guide Version 2.0.0


Класс Benchmarking (тестирование производительности)

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

Примечание: Этот класс инициализируется автоматически, нет нужды делать это вручную.

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

Содержание

Использование класса 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');

Пожалуйста, прочтите Profiler для дополнительной информации.

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

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

<?php echo $this->benchmark->elapsed_time();?>

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

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

{elapsed_time}

Примечание: Если вы хотите протестировать что-то в своем контроллере, вы должны устанавливать собственные точки начала и остановки.

Отображение потребления памяти

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

<?php echo $this->benchmark->memory_usage();?>

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

Другой способ показать потребление памяти в ваших Отображениях — использование псевдо-переменной:

{memory_usage}