함수 실행시간 측정하기
기본 방법
코딩을 하다보면 특정함수의 실행시간을 측정하고 싶을 때가 있습니다. 예를들어, 함수를 개선해서 개선 전과 후의 처리시간을 비교하고 싶을 때가 바로 그때 이지요. 간단히 코드로 작성해보면 다음과 같습니다.
NSDate *methodStart = [NSDate date];
/* ... 함수 처리 ... */
NSDate *methodFinish = [NSDate date];
NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];
NSLog(@"실행시간 = %f", executionTime);
함수 처리를 하기 직전 현재시간과 함수를 처리하고 난 직후의 현재시간을 구하고, 함수 처리가 끝난 직후의 시간에서 함수 처리를 하기 직전의 시간을 빼면 그 차이가 바로 함수를 실행하는데 걸린 시간입니다.
응용 방법
만약 실행시간 측정을 여러군데서 하거나 자주 사용해야하는 경우라면 다음과 같이 예약어로 정의를 해서 사용하면 편리합니다.
#define TICK NSDate *startTime = [NSDate date]
#define TOCK NSLog(@"Time: %f", -[startTime timeIntervalSinceNow])
-[startTime timIntervalSinceNow]
앞에 ‘-‘(마이너스) 기호가 가 붙은 이유는 timeIntervalSinceNow
메소드를 호출한 객체가 현재시간 이전 시점의 객체라면 ‘-‘값을 반환하기 때문에 그것을 양수 값으로 만들기 위해 ‘-‘를 붙인 것입니다. 등록된 예약어는 아래와 같이 사용하시면 됩니다.
TICK;
/* ... 메소드 실행 ... */
TOCK;
[참 고]