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

# CodeIgniter User Guide Version 2.1.0

Search User Guide

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

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

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

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

### Содержание

- Использование класса Benchmark
- Профилирование ваших точек тестирования
- Отображение полного времени выполнения
- Отображение потребления памяти

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