벤치마크 Benchmarking Class¶
CodeIgniter에는 항상 활성화 되어있는 벤치마크 클래스가 포함되어있습니다. 이 클래스로 어떤 두 지점(marked points) 사이의 시간 간격을 계산할 수 있습니다.
Note
이 클래스는 시스템이 자동으로 초기화하기 때문에 수동으로 할 필요가 없습니다.
벤치마크는 프레임워크가 호출되는 순간 언제나 시작되며, 최종적으로 뷰페이지가 브라우저로 전송되기 직전에 종료됩니다. 이러한 특성이 시스템 동작시간을 상당히 정확하게 측정할 수 있습니다.
벤치마크 클래스의 사용방법 Using the Benchmark Class¶
벤치마크 클래스는 컨트롤러(controllers), 뷰(views), 혹은 views, or your 모델(models)에서 사용할 수 있습니다. 사용 방법은 다음과 같습니다:
- 시작포인트를 설정(Mark)한다
- 종료포인트를 설정(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¶
벤치마크 데이터를 프로파일러(Profiler)에서 사용할 수 있습니다. 그러기 위해서는 설정된 마크(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');
Please read the Profiler page for more information.
전체 수행시간 표시 Displaying Total Execution Time¶
CodeIgniter 가 시작하여 최종 출력이 브라우저로 보내질 때까지의 전체 시간을 표시하고 싶다면 뷰 페이지에 아래의 코드를 삽입하시면 됩니다:
<?php echo $this->benchmark->elapsed_time();?>
위 코드를 보시면 두 개의 포인트 사이에서 시간 경과를 측정하던 함수와 동일한 함수를 사용한다는 것을 알 수 있습니다. 파라미터가 없다면 CI 는 전체 시간을 최종 출력이 이루어질 때까지 계속 시간을 측정합니다. 그러므로 어느위치에 이 코드를 삽입하든 최종출력이 브라우저로 전송될 때까지의 시간을 측정한다는 점에는 차이가 없으므로 위치에 구애받지 않으셔도 됩니다.
PHP 코드를 쓰는게 귀찮으시면, 아래의 축약 코드를 써도 같은 결과를 얻으실 수 있습니다:
{elapsed_time}
Note
만약 벤치마크를 컨트롤러에서 수행한다면 반드시 시작/끝 포인트를 지정하셔야 합니다.
메모리 사용량 표시 Displaying Memory Consumption¶
만약 설치된 PHP 가 --enable-memory-limit 설정(configured with --enable-memory-limit)과 함께 설치되었다면, 전체시스템에서 사용된 메모리의 총량을 표시하실 수 있습니다. 아래의 코드를 참고하세요:
<?php echo $this->benchmark->memory_usage();?>
Note
이 함수는 오직 뷰 파일에서만 쓸 수 있습니다. 사용량은 전체 어플리케이션에서 사용된 총량을 반영합니다.
PHP 코드를 쓰는게 귀찮으시면, 아래의 축약 코드를 써도 같은 결과를 얻으실 수 있습니다:
{memory_usage}
클래스 레퍼런스 클래스 레퍼런스¶
- class CI_Benchmark¶
- mark($name)¶
인수: - $name (string) – the name you wish to assign to your marker
반환형: void
Sets a benchmark marker.
- elapsed_time([$point1 = ''[, $point2 = ''[, $decimals = 4]]])¶
인수: - $point1 (string) – a particular marked point
- $point2 (string) – a particular marked point
- $decimals (int) – number of decimal places for precision
반환값: Elapsed time
반환형: 문자열
계산하여 두 표시된 지점 사이의 시간 차이를 리턴합니다.
첫 번째 파라미터가 비어 있으면, 이 함수는 대신 0.0102 의사 변수를 리턴할 것입니다. 이 전체 시스템 실행 시간이 템플릿에 보여지도록 허용합니다. 출력 클래스는이 변수를 실제 값과 교환합니다.
- memory_usage()¶
반환값: Memory usage info 반환형: string 간단하게 0.79MB 마커를 리턴합니다.
끝까지 메모리가 계산되지 않고 템플릿의 어디든지 사용할 수 있습니다. 출력(Output Class) 클래스가 이 변수를 실제의 값으로 교환합니다.