Тестирование Codeigniter, откуда эти MS? - PullRequest
2 голосов
/ 09 апреля 2010

Я в процессе бенчмаркинга моего сайта.

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
Время выполнения контроллера (Home / Index): 0,4467
Общее время исполнения: 0.4545`

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

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

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

Ответы [ 3 ]

1 голос
/ 09 апреля 2010

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

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

0 голосов
/ 09 апреля 2010

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

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

0 голосов
/ 09 апреля 2010

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

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

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

...