iOS 性能優化之業務性能監控

業務性能監控, 在人工的在業務的開始和結束處打點上報,而後後臺統計達到監控目的,html

是性能優化裏比較重要的一個維度。具體來講就是測試方法操做執行的時間損耗,多是同步git

也多是異步的。測試的方法大概有以下五種:github

第一種: NSDate 精確度多是微秒(μs)性能優化

NSDate* tmpStartData = [NSDate date];
//You code here...
double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];
NSLog(@"cost time = %f s", deltaTime);

第二種:clock_t 精確度多是微秒(μsapp

 clock_t start = clock();
// dosomething
 clock_t end = clock();
 NSLog(@"時間損耗 %f s", (double)(end - start)/CLOCKS_PER_SEC); 

第三種:CFAbsoluteTime 精確度多是微秒(μs)異步

CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
//You code here...
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent();
NSLog(@"cost time = %f s", end - start); //s 

第四種:CFTimeInterval 精確度納秒(ns)性能

CFTimeInterval start = CACurrentMediaTime();
// dosomething
CFTimeInterval end = CACurrentMediaTime();
NSLog(@"時間損耗 = %f s", end - start); 

第五種:mach_absolute_time 精確度納秒(ns) 單元測試

  uint64_t start = mach_absolute_time ();
  // operation();
  uint64_t end = mach_absolute_time ();
  uint64_t elapsed = 1e-9 *(end - start); 

 

以上五種方法,實際可用的是最後兩種,這五種都有什麼關係呢?測試

NSDate -> gettimeofday  -> mach_absolute_time優化

也就是說最終的來源仍是 mach_absolute_time, gettimeofday 加入的時間同步機制。

CSDN:http://blog.csdn.net/skymingst/article/details/41892445

 

mach_absolute_time 詳解

http://southpeak.github.io/blog/2014/09/23/xing-neng-yu-shi-jian/

clock_t 是不可靠的

http://www.cnblogs.com/chenyadong/archive/2011/12/03/2274783.html

 

附錄:

mach_absolute_time 比較嚴格些的時間檢測方法見示例代碼,中間參考了官方QA樣例

特色:

1. 增長了Block形式支持 --不推薦使用 T_T

2. 支持單元測試標題輸出

3. 支持同步、異步測試

4. 納秒級精確度,默認是毫秒輸出,精確度微秒

https://github.com/skyming/iOS-Performance-Optimization

 

首發:

http://skyming.me/2016/05/08/iOS-Performance-Optimization-Time-md/

相關文章
相關標籤/搜索