美文网首页
NSDate 、CFAbsoluteTimeGetCurrent

NSDate 、CFAbsoluteTimeGetCurrent

作者: T_Yang | 来源:发表于2017-05-03 09:41 被阅读185次

今天测试程序性能时设计到了精密的时间计算,我了解了下,大概有三种写法

  • NSDate
  NSTimeInterval dateTime = [NSDate timeIntervalSinceReferenceDate];

NSDate,大家再熟悉不过了,这个类方法是获取从2001年1月1日 00:00开始的秒数。

  • QuartzCore
CFTimeInterval currentTime = CACurrentMediaTime();

CACurrentMediaTime()方法是QuartzCore框架里的,相对来说比较原子量,比较精确,可以用来测量程序的时间效率。获取到的时间是手机开机后的秒数,在模拟器上运行数值不必计较,算时间差就好。

  • CoreFoundation
CFAbsoluteTime absoluteTime = CFAbsoluteTimeGetCurrent();

CoreFoundation框架中的CACurrentMediaTime()方法,也是获取2001年1月1日 00:00开始的秒数。相当于上面的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);
    });

输出结果

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

相关文章

网友评论

      本文标题:NSDate 、CFAbsoluteTimeGetCurrent

      本文链接:https://www.haomeiwen.com/subject/pmchtxtx.html