Spec-Zone.ru › CodeIgniter 3

Класс Benchmarking

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

Примечание

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

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

  • Использование класса Benchmark
    • Профилирование точек отсчёта
    • Отображение общего времени выполнения
    • Отображение потребления памяти
  • Справочник по классу

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

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

  1. Отметить начальную точку
  2. Отметить конечную точку
  3. Вызвать функцию “elapsed time”, чтобы просмотреть результаты

Вот пример с реальным кодом:

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

// Some code happens here

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

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

Примечание

Слова “code_start” и “code_end” произвольны. Они просто используются для установки двух маркеров. Вы можете использовать любые слова, и вы можете установить несколько наборов маркеров. Рассмотрите этот пример:

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

// Some code happens here

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

// More code happens here

$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');

// Some code happens here...

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

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

// Some more code happens here...

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

Для получения дополнительной информации прочитайте страницу профилировщика.

Отображение общего времени выполнения

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

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

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

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

{elapsed_time}

Примечание

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

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

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

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

Примечание

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

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

{memory_usage}

Справочник по классу

class CI_Benchmark
mark($name)
Параметры:
  • $name (string) – имя, которое вы хотите присвоить своему маркеру
Тип возвращаемого значения:

void

Устанавливает маркер отсчёта.

elapsed_time([$point1 = ''[, $point2 = ''[, $decimals = 4]]])
Параметры:
  • $point1 (string) – конкретная отмеченная точка
  • $point2 (string) – конкретная отмеченная точка
  • $decimals (int) – количество знаков после запятой для точности
Возвращает:

Время выполнения

Тип возвращаемого значения:

string

Вычисляет и возвращает разницу во времени между двумя отмеченными точками.

Если первый параметр пуст, эта функция вместо этого возвращает псевдопеременную {elapsed_time}. Это позволяет отобразить полное время выполнения системы в шаблоне. Класс вывода заменит фактическое значение для этой переменной.

memory_usage()
Возвращает: Информация о потреблении памяти
Тип возвращаемого значения: string

Просто возвращает маркер {memory_usage}.

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

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/benchmark.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API