嗨:在iPhone应用程序中,我使用一个库(C++),该库在计算完成时异步进行回调。
现在,我要测量在进行回调之前所花费的时间-包括调用该库的方法。 Apple的Instruments应用程序是否有可能做到这一点?最佳做法是什么?
最佳答案
过去,我使用以下方法来进行必须优化的网络 call -尽管起初看起来有些令人费解,但肯定可以提供我所见过的最准确的时间。
uint64_t time_a = mach_absolute_time();
// do stuff
uint64_t time_b = mach_absolute_time();
[self logTime:(time_b-time_a)];
- (void) logTime:(uint64_t)machTime {
static double timeScaleSeconds = 0.0;
if (timeScaleSeconds == 0.0) {
mach_timebase_info_data_t timebaseInfo;
if (mach_timebase_info(&timebaseInfo) == KERN_SUCCESS) {
double timeScaleMicroSeconds = ((double) timebaseInfo.numer / (double) timebaseInfo.denom) / 1000;
timeScaleSeconds = timeScaleMicroSeconds / 1000000;
}
}
NSLog(@"%g seconds", timeScaleSeconds*machTime);
}