Objective-C 計算代碼運行時間
- 今天看到一篇關(guān)于iOS應(yīng)用性能優(yōu)化的文章,其中提到計算代碼的運行時間豆赏,覺得非常有用播揪,值得收藏。不過在模擬器和真機(jī)上是有差異的顾瞪,以此方法觀察程序運行狀態(tài)舔庶,提高效率返劲。
第一種:(最簡單的NSDate)
NSDate* tmpStartData = [NSDate date];
//You code here...
double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];
NSLog(@"cost time = %f", deltaTime);
第二種:(將運行代碼放入下面的Block中,返回時間)
#import <mach/mach_time.h> // for mach_absolute_time() and friends
CGFloat BNRTimeBlock (void (^block)(void)) {
mach_timebase_info_data_t info;
if (mach_timebase_info(&info) != KERN_SUCCESS) return -1.0;
uint64_t start = mach_absolute_time ();
block ();
uint64_t end = mach_absolute_time ();
uint64_t elapsed = end - start;
uint64_t nanos = elapsed * info.numer / info.denom;
return (CGFloat)nanos / NSEC_PER_SEC;
}
第三種:
/**
* 計算腳本時間
* @param $last 最后一次的運行clock
* @param $key 標(biāo)識
* @return 當(dāng)前clock
*/
double t(double last, char* key){
clock_t now = clock();
printf("time:%fs \t key:%s \n", (last != 0) ? (double)(now - last) / CLOCKS_PER_SEC : 0, key);
return now;
}
double t1 = t(0, "");
//do something
t(t1, "end");
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者