벤치마크 Benchmarking Class

CodeIgniter에는 항상 활성화 되어있는 벤치마크 클래스가 포함되어있습니다. 이 클래스로 어떤 두 지점(marked points) 사이의 시간 간격을 계산할 수 있습니다.

Note

이 클래스는 시스템이 자동으로 초기화하기 때문에 수동으로 할 필요가 없습니다.

벤치마크는 프레임워크가 호출되는 순간 언제나 시작되며, 최종적으로 뷰페이지가 브라우저로 전송되기 직전에 종료됩니다. 이러한 특성이 시스템 동작시간을 상당히 정확하게 측정할 수 있습니다.

벤치마크 클래스의 사용방법 Using the Benchmark Class

벤치마크 클래스는 컨트롤러(controllers), 뷰(views), 혹은 views, or your 모델(models)에서 사용할 수 있습니다. 사용 방법은 다음과 같습니다:

  1. 시작포인트를 설정(Mark)한다
  2. 종료포인트를 설정(Mark)한다
  3. “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.0184 의사 변수를 리턴할 것입니다. 이 전체 시스템 실행 시간이 템플릿에 보여지도록 허용합니다. 출력 클래스는이 변수를 실제 값과 교환합니다.

memory_usage()
반환값:Memory usage info
반환형:string

간단하게 3.2MB 마커를 리턴합니다.

끝까지 메모리가 계산되지 않고 템플릿의 어디든지 사용할 수 있습니다. 출력(Output Class) 클래스가 이 변수를 실제의 값으로 교환합니다.