NSDate 、CFAbsoluteTimeGetCurrent()和CACurrentMediaTime()

今天測(cè)試程序性能時(shí)設(shè)計(jì)到了精密的時(shí)間計(jì)算,我了解了下,大概有三種寫(xiě)法

  • NSDate
  NSTimeInterval dateTime = [NSDate timeIntervalSinceReferenceDate];

NSDate,大家再熟悉不過(guò)了,這個(gè)類(lèi)方法是獲取從2001年1月1日 00:00開(kāi)始的秒數(shù)。

  • QuartzCore
CFTimeInterval currentTime = CACurrentMediaTime();

CACurrentMediaTime()方法是QuartzCore框架里的,相對(duì)來(lái)說(shuō)比較原子量,比較精確,可以用來(lái)測(cè)量程序的時(shí)間效率。獲取到的時(shí)間是手機(jī)開(kāi)機(jī)后的秒數(shù),在模擬器上運(yùn)行數(shù)值不必計(jì)較,算時(shí)間差就好。

  • CoreFoundation
CFAbsoluteTime absoluteTime = CFAbsoluteTimeGetCurrent();

CoreFoundation框架中的CACurrentMediaTime()方法,也是獲取2001年1月1日 00:00開(kāi)始的秒數(shù)。相當(dāng)于上面的NSDate方法,值是一樣的。

附上程序代碼片段

    NSTimeInterval dateTime = [NSDate timeIntervalSinceReferenceDate];
    CFTimeInterval currentTime = CACurrentMediaTime();
    CFAbsoluteTime absoluteTime = CFAbsoluteTimeGetCurrent();
    NSLog(@"%f---%f---%f", dateTime, currentTime, absoluteTime);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"%f---%f---%f", [NSDate timeIntervalSinceReferenceDate] - dateTime, CACurrentMediaTime() - currentTime, CFAbsoluteTimeGetCurrent() - absoluteTime);
    });

輸出結(jié)果

2017-05-03 09:38:39.776 test[3757:342762] 515468319.776574---20629.395686---515468319.776596
2017-05-03 09:38:41.974 test[3757:342762] 2.197655---2.197604---2.197633
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容