벤치마크 Benchmarking Class
CodeIgniter에는 항상 활성화되어있는 벤치마크 클래스가 포함되어있습니다.이 클래스로 어떤 두 지점(marked points) 사이의 시간 간격을 계산할수 있습니다.
Note: 이 클래스는 시스템이 자동으로 초기화하기때문에 수동으로 할 필요가 없습니다.
벤치마크는 프레임워크가 호출되는 순간 언제나 시작되며, 최종적으로 뷰페이지가 브라우저로 전송되기 직전에 종료됩니다. 이러한 특성이 시스템 동작시간을 상당히 정확하게 측정할수 있습니다.
목차
벤치마크 클래스 사용방법
벤치마크 클래스는 컨트롤러, 뷰, 혹은 모델에서 사용할 수 있습니다.사용방법은 다음과 같습니다:
- 시작포인트를 설정(Mark)한다
- 끝 포인트를 설정한다.
- "elapsed time" 함수를 실행하여 결과를 확인한다.
실재 사용사례입니다:
$this->benchmark->mark('code_start');
// Some code happens here
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
Note: "code_start" 나 "code_end" 는 여러분이 임의로 정할 수 있습니다.. 단지 두 지점을 설정하기 위한 말일뿐입니다. 당신은 어떤 말이든 원하는대로 집어넣을수 있고 , 몇개의 마커(markers)를 설정해도 상관이 없습니다. 다음예제를 봐주세요 :
$this->benchmark->mark('dog');
// Some code happens here
$this->benchmark->mark('cat');
// More code happens here
$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');
설정한 벤치마크 포인트에서 성능검사하기(Profiling Your Benchmark Points)
벤치마크 데이터를 프로파일러 에서 사용할 수 있습니다.그러기 위해서는 설정된 마크(marks)들이 모두 짝을 이루어야하며, 각 마크 포인트(mark poin)이름은 반드시 _start 와 _end로 끝나야합니다. 각 쌍의 마크포인트 이름은 _start,_end 부분을제외하고 반드시 동일해야합니다.예:
$this->benchmark->mark('my_mark_start');
// Some code happens here...
$this->benchmark->mark('my_mark_end');
$this->benchmark->mark('another_mark_start');
// Some more code happens here...
$this->benchmark->mark('another_mark_end');
더 자세한정보는 프로파일러 페이지를 참고하세요 .
전체수행시간 표시
CodeIgniter 가 시작하여 최종 출력이 브라우저로 보내질때까지의 전체시간을 표시하고싶다면 뷰 페이지에 아래의 코드를 삽입하시면 됩니다.<?php echo $this->benchmark->elapsed_time();?>
위코드를 보시면 두개의 포인트사이에서 시간경과를 측정하던 함수와 동일한 함수를 사용한다는것을 알수 있습니다. 파라미터가 없다면 CI 는 전체시간을 최종출력이 이루어질때까지 계속 시간을 측정합니다. 그러므로 어느위치에 이 코드를 삽입하든 최종출력이 브라우저로 전송될때까지의 시간을 측정한다는점에는 차이가 없으므로 위치에 구애받지 않으셔도 됩니다.
PHP 코드를 쓰는게 귀찮으시면, 아래의 축약 코드를 써도 같은 결과를 얻으실 수 있습니다.
{elapsed_time}
Note: 만약 벤치마크를 컨트롤러에서 수행한다면 반드시 시작/끝 포인트를 지정하셔야 합니다.
메모리 사용량 표시
만약 설치된 PHP 가 --enable-memory-limit 설정(configured with --enable-memory-limit)과 함께 설치되었다면, 전체시스템에서 사용된 메모리의 총량을 표시하실 수 있습니다. 아래의 코드를 참고하세요 .
<?php echo $this->benchmark->memory_usage();?>
Note:이 함수는 오직 뷰 파일에서만 쓸수있습니다. 사용량은 전체 어플리케이션에서 사용된 총량을 반영합니다.
PHP 코드를 쓰는게 귀찮으시면, 아래의 축약 코드를 써도 같은 결과를 얻으실 수 있습니다.
{memory_usage}