Бенчмаркинг Codeigniter, откуда берутся эти мс?

Я нахожусь в процессе сравнительного анализа своего веб-сайта.

class Home extends Controller {

    function Home() 
    {
        parent::Controller();
        $this->benchmark->mark('Constructor_start');

        $this->output->enable_profiler(TRUE);
        $this->load->library ('MasterPage');

        $this->benchmark->mark('Constructor_end');
    }

    function index() 
    {
        $this->benchmark->mark('Index_start');

        $this->masterpage->setMasterPage('master/home');
        $this->masterpage->addContent('home/index', 'page');
        $this->masterpage->show();

        $this->benchmark->mark('Index_end');
    }
}

Вот результаты:

Время загрузки базовых классов: 0,0076
Конструктор: 0,0007
Индекс: 0,0440
Время выполнения контроллера ( Главная/ Индекс ): 0,4467
Общее время выполнения: 0,4545`

Я понимаю следующее:

  • Базовые классы времени загрузки (0,0076)
  • Конструктор (0,0007)
  • Индекс (0,0440)

Но откуда берется остальное время?


person Ropstah    schedule 08.04.2010    source источник
comment
Что является единицей результатов?   -  person MrD    schedule 08.11.2014


Ответы (3)


Я не проводил много тестов сайтов на основе CI, но 0,4545 не кажется очень быстрым.

Одна вещь, которая происходит под эгидой времени выполнения контроллера (но вне ваших настраиваемых тестов), — это автозагрузка всего, что определено в файле config/autoload.php. Если вы загружаете туда множество библиотек или моделей, это увеличит время выполнения вашего контроллера без какой-либо очевидной причины.

person Eric G    schedule 09.04.2010
comment
Нет, 0,4545 НЕ очень быстро, это основная причина, по которой я оказался здесь... Я попробую поставить отметки в загружаемых библиотеках... - person Ropstah; 10.04.2010
comment
Хороший улов, кажется, это плагин. Спасибо! - person Ropstah; 10.04.2010

Я думаю, что последняя строка вашей индексной функции должна быть

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

Эта опечатка могла вызвать забавные результаты.

person Stephen Curran    schedule 08.04.2010
comment
Нет, это не проблема. Была просто опечатка в вопросе. Хотя спасибо, что заметили... - person Ropstah; 09.04.2010

Codeigniter автоматически оценивает общее время от запроса до окончательного вывода, отправленного в браузер (это общее время выполнения).

Кроме того, когда он собирается вызвать указанный вами контроллер/метод (обычно через URL-адрес), он отмечает начало этого, а затем, когда этот метод возвращает что-то или отправляет данные на выход, он завершает этот тест (это время выполнения контроллера ( Главная/ Индекс ) вы видите)

person Tom Schlick    schedule 09.04.2010