2009-03-14 5 views

답변

12

는 여기에 내가 할 수있는 작업은 다음과 같습니다

NSDate * start = [NSDate date]; 
// do whatever I need to time 
NSLog(@"time took: %f", -[start timeIntervalSinceNow]); 

출력은 초에있을 것 (소수 부분). NSDate의 정확도는 정확하지 않지만 밀리 초 단위로 측정됩니다.

시간을 기록하려는 코드가 너무 빠르면 코드를 100 번 실행하는 루프에 넣으십시오. (물론, 타이밍을 지정하는 코드에는 부작용이 없다고 가정합니다.)

+0

이것이 내가 실행하는 것입니다. 병목 현상 만 신경 쓰고 있기 때문에 너무 빠르다면 개인적으로 신경 쓰지 않아도됩니다. =) – migs647

15

나노초 단위로 측정하려면 mach_absolute_time을 사용할 수 있습니다.

#import <mach/mach_time.h> 

uint64_t startTime = 0; 
uint64_t endTime = 0; 
uint64_t elapsedTime = 0; 
uint64_t elapsedTimeNano = 0; 

mach_timebase_info_data_t timeBaseInfo; 
mach_timebase_info(&timeBaseInfo); 

startTime = mach_absolute_time(); 

//do something here 

endTime = mach_absolute_time(); 

elapsedTime = endTime - startTime; 
elapsedTimeNano = elapsedTime * timeBaseInfo.numer/timeBaseInfo.denom; 

참조 : Technical Q&A QA1398: Mach Absolute Time Units

0

사용 dispatch_benchmark는 나노초 방법의 실행 시간을 기록합니다.
수동으로 반복 및 호출하는 것보다 훨씬 멋진 구문이 있습니다 mach_absolute_time() dispatch_benchmark는 Grand Central Dispatch의 일부입니다.

size_t const blockIterations = 1; //block call count 
uint64_t t = dispatch_benchmark(blockIterations, ^{ //your code inside block 
     [self TEST_processJSONDataRecordsWithCompletionHandler:^(id handler) {}]; 
    }); 
NSLog(@" Avg. Runtime in nanoseconds : %llu ns", t); 

신용이 Benchmarking

로 이동 : 로그의 실행 시간을

extern uint64_t dispatch_benchmark(size_t count, void (^block)(void));

내가 이것을 사용하고 있습니다 : 사용자가 직접 사용하기 전에 그렇게해야하므로이 기능은 공개적으로 선언되지 않았습니다

관련 문제