函数时间测量之iPhone篇

关键字:
iPhone OS (or Mac OS) Time Measure in nano second or micro sec IFQ IF.Q ifqqfi.
时间测量 测速

在 iPhone (or MacOS)上以微秒或者纳秒单位来测量程序的执行时间,
我想应该是很常用的功能吧。一年前做iPhone程序的时候就出现了这个需求,当时花了一个晚上才找到相应的方法。往往在这些意想不到的小地方耗费很多时间。一年后的今天我google了下相关的关键字,还是没有相关的文章,所以我就举手之劳,帮大家省点时间吧。

其实很简单,下面的这段程序就可以搞定:

-----------------------------------------------------
#import <mach/mach.h>
#import <mach/mach_time.h>

static uint64_t start;
static uint64_t end;
static mach_timebase_info_data_t    sTimebaseInfo;


+ (void) IFQCountStart {

if ( sTimebaseInfo.denom == 0 ) {
        (void) mach_timebase_info(&sTimebaseInfo);
    }

start = mach_absolute_time();
}

+ (void) IFQCountEnd {

end = mach_absolute_time();

}

+ (void) IFQShowCount {
uint64_t diff;
uint64_t diffnano;

diff = end - start;

diffnano = diff * sTimebaseInfo.numer / sTimebaseInfo.denom;

NSLog(@"Nano sec : %qu", diffnano);
}

-----------------------------------------------------

用尻想也知道了,要测量的代码段前后放上Start,End函数,完事后 Show 一下就可以了。

关于测量的精度是否真的能达到nano,现在有点不确定了。一年前的东西了,能翻出代码就不错了。。我现在用过的其他平台都是和CPU速度相同频率来计数来计时的,精度都还没到1 nano sec的。不过微秒单位的计时肯定是么有问题了。我想一般情况下微秒已经足够了吧~

最后给出个参考链接。是MacOS下的官方的说明。(其实我就是把这个搬到iPhone来用而已)
http://developer.apple.com/mac/library/qa/qa2004/qa1398.html


下次讲讲 VxWorks 下的计时方法~



blog comments powered by Disqus

Published

2010-08-20

Categories


Tags