Класс Benchmarking
В CodeIgniter есть всегда доступный класс Benchmarking, который позволяет получить время, затраченное на выполнение кода между двумя отмеченными точками в коде.
Примечание: Данный класс инициализируется приложением автоматически. Вручную инициализировать его не требуется.
В дополнение, таймер всегда стартует в начале работы фрейсмворка и работает до момента отсылки информации браузеру, что позволяет произвести очень точный замер времени выполнения приложения.
Содержание
- Использование класса Benchmark
- Профилирование меток
- Вывод общего времени выполнения
- Вывод количества потребляемой памяти
Использование класса Benchmark
Класс Benchmark может быть использован в контроллерах, отображениях или моделях. Процесс использования таков:
- Отмечаем стартовую точку
- Отмечаем конечную точку
- Вызываем функцию 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–код, — использовать псевдо–переменную в файлах отображения:
0.0050
Примечание: Если вы хотите замерить что–либо в вашем контроллере — задавайте свои стартовые и конечные метки.
Вывод количества потребляемой памяти
Если PHP на вашем сервере собран с опцией --enable-memory-limit, вы можете вывести количество потребляемой приложением памяти используя следующий код в одном из файлов отображений:
<?=$this->benchmark->memory_usage();?>
Примечание: Данная функция может быть использована только в отображениях. Значение отражает суммарную память, используемую всем приложением.
Альтернативный способ отобразить потребление памяти, в том случае, если вы не хотите использовать PHP:
0.38MB