[IFQ原创]函数时间测量之iPhone篇
函数时间测量之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