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

 

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

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

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

Оглавление

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

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

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

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

Вот пример использования класса:

  1. $this->benchmark->mark('code_start');
  2.  
  3. // Some code happens here
  4.  
  5. $this->benchmark->mark('code_end');
  6.  
  7. echo $this->benchmark->elapsed_time('code_start', 'code_end');

Слова "code_start" и "code_end" не являются обязательными. Вы можете использовать любые символьные маркеры для отметки точек замера производительности, и вы можете использовать несколько маркеров одновременно. К примеру:
  1. $this->benchmark->mark('dog');
  2.  
  3. // Some code happens here
  4.  
  5. $this->benchmark->mark('cat');
  6.  
  7. // More code happens here
  8.  
  9. $this->benchmark->mark('bird');
  10.  
  11. echo $this->benchmark->elapsed_time('dog', 'cat');
  12. echo $this->benchmark->elapsed_time('cat', 'bird');
  13. echo $this->benchmark->elapsed_time('dog', 'bird');

Профилирование точек исходного кода

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

  1. $this->benchmark->mark('my_mark_start');
  2.  
  3. // Some code happens here...
  4.  
  5. $this->benchmark->mark('my_mark_end');
  6.  
  7. $this->benchmark->mark('another_mark_start');
  8.  
  9. // Some more code happens here...
  10.  
  11. $this->benchmark->mark('another_mark_end');
.
Более детальная информация доступна на странице описания профилирования приложения.

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

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

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

Вы можете заметить, что та же функция используется для вывода времени выполнения между двумя маркерами в исходном коде, но в данном случае эта функция вызывается без каких либо параметров. В том случае, если функция вызвана без параметров, CodeIgniter продолжает отсчет времени до того момента, как данные будут выведены браузеру. Не имеет значения, на каком этапе выполнения вы вызовете эту функцию, таймер будет отсчитывать время выполнения до конечного момента выполнения приложения. Альтернативным способом вывода общего времени выполнения является использование псевдо-переменных, если вы предпочитаете не использовать чистый PHP-код:
  1. {elapsed_time}


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

Отображение объема используемой памяти

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

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

Примечание: данная функция может быть использована только в файлах представления. Будет отображено общее количество памяти, потреблённой приложением в целом.
Альтернативный способ вывести данные о потреблении памяти в файлах представления - использование псевдо-переменной:
  1. {memory_usage}

Отправить комментарий

CAPTCHA
Этот вопрос предназначен для того, чтобы отсеять ботов
9 + 1 =
Решите простой математический пример и введите результат. К примеру, для вопроса 1+3 нужно ввести 4

Вход в систему

Последние комментарии