벤치마크
CodeIgniter는 코드를 벤치마킹하고 다른 옵션인 Timer와 Iterator를 테스트하는데 도움이 되는 두 가지 도구를 제공합니다. 타이머를 사용하면 스크립트 실행시 두 지점 사이의 시간을 쉽게 계산할 수 있습니다. Iterator를 사용하면 몇 가지 변형을 설정하고 해당 테스트를 실행하여 성능 및 메모리 통계를 기록하고 어떤 버전이 가장 적합한 지 결정할 수 있습니다.
Timer 클래스는 항상 활성화되어 있으며, 프레임워크가 호출되는 순간부터 시작되어 출력이 사용자에게 전송되기 직전까지 전체 시스템 실행의 정확한 타이밍을 확인 가능하게 합니다.
타이머 사용
타이머를 사용하면 어플리케이션 실행시 두 순간 사이의 시간을 측정할 수 있습니다.
따라서 어플리케이션의 다양한 성능을 간단하게 측정할 수 있습니다.
모든 측정은 start()
와 stop()
메소드를 사용하여 수행됩니다.
start()
메소드는 타이머의 이름을 단일 매개 변수로 사용합니다.
타이머 이름은 모든 문자열을 사용할 수 있으며, 어떤 측정값이 어떤 것인지 알기 위해 참조용으로 사용됩니다
<?php
$benchmark = \Config\Services::timer();
$benchmark->start('render view');
stop()
메소드는 중지하려는 타이머의 이름을 유일한 매개 변수로 사용합니다.
<?php
$benchmark->stop('render view');
이름은 대소문자를 구분하지 않지만 타이머를 시작할 때 지정한 이름과 일치해야합니다.
전역 함수 timer()
를 사용하여 타이머를 시작하고 중지할 수 있습니다
<?php
// Start the timer
timer('render view');
// Stop a running timer,
// if one of this name has been started
timer('render view');
벤치마킹 포인트 보기
어플리케이션이 실행될 때 설정한 모든 타이머는 Timer 클래스에 의해 수집됩니다.
그러나 자동으로 표시하지는 않습니다.
getTimers()
메소드를 호출하여 모든 타이머를 검색할 수 있으며, 시작, 종료 및 지속 시간을 포함한 일련의 벤치 마크 정보를 리턴합니다.
<?php
$timers = $benchmark->getTimers();
/*
* Produces:
* [
* 'render view' => [
* 'start' => 1234567890,
* 'end' => 1345678920,
* 'duration' => 15.4315, // number of seconds
* ]
* ]
*/
단일 매개 변수로 표시할 소수 자릿수를 전달하여 계산된 지속 시간의 정밀도를 변경할 수 있습니다. 기본값은 소수점 4자리입니다
<?php
$timers = $benchmark->getTimers(6);
타이머는 자동으로 디버그 툴바에 표시됩니다.
실행 시간 표시
getTimers()
메소드는 프로젝트의 모든 타이머에 대한 원시 데이터를 제공하지만 getElapsedTime()
메소드를 사용하여 단일 타이머의 지속 시간을 초 단위로 검색할 수 있습니다. 첫 번째 매개 변수는 표시 할 타이머의 이름입니다. 두 번째는 표시 할 소수 자릿수입니다.(기본값은 4)
<?php
echo timer()->getElapsedTime('render view');
// Displays: 0.0234
Iterator 사용
Iterator는 솔루션에서 여러 변형을 시도하여 속도 차이와 다른 메모리 사용 패턴을 볼 수 있도록 설계된 간단한 도구입니다. 실행할 수있는 “태스크”를 여러 개 추가할 수 있으며, 클래스는 수백 또는 수천 번 태스크를 실행하여 성능을 보다 명확하게 파악합니다. 그런 다음 스크립트에서 결과를 검색하여 사용하거나, HTML 테이블로 표시할 수 있습니다.
Creating Tasks To Run
작업은 클로저(Closures)내에 정의됩니다.
작업이 생성한 모든 출력은 자동으로 삭제됩니다.
그것들은 add()
메소드를 통해 Iterator 클래스에 추가됩니다.
첫 번째 매개 변수는 이 테스트를 참조하려는 이름입니다.
두 번째 매개 변수는 클로저입니다.
<?php
$iterator = new \CodeIgniter\Debug\Iterator();
$iterator->add('double', static function ($word = 'little') {
"Some basic {$word} string test.";
});
작업 실행
실행할 작업을 추가한 후에는 run()
메소드를 사용하여 작업을 여러번 반복할 수 있습니다.
기본적으로 각 작업을 1000번 실행합니다. 이것은 대부분의 간단한 테스트에 충분합니다.
테스트를 그보다 더 많이 실행해야 하는 경우 숫자를 첫 번째 매개 변수로 전달합니다
<?php
// Run the tests 3000 times.
$htmlTable = $iterator->run(3000);
실행되면 테스트 결과가 포함된 HTML 테이블이 반환됩니다.
결과를 표시하지 않으려면 두 번째 매개 변수에 false
를 전달하면됩니다.
<?php
// Returns null.
$iterator->run(1000, false);