Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

CodeIgniter User Guide Version 2.1.3


Класс 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');

Профилирование ваших точек производительности

Если вы хотите, чтобы ваши данные тестирования производительности было доступны в профайлере, все точки маркеров должны устанавливаться парами, и каждая точка должна обозначаться с _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 до того момента, как данные отправляются в браузер, просто поместите приведенный ниже код в одно из ваших отображений:

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

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

Альтернативный способ показать время выполнения — использовать эту псевдопеременную:

{elapsed_time}

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

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

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

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

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

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

{memory_usage}

Поделиться


Переведено в компании Аринт.

Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter

Яндекс.Метрика