如何准确计算在iPhone上调用功能所需的时间?

Tom*_*mmy 9 iphone benchmarking

我想知道将消息发送到具有至少1ms准确度的对象需要多长时间.我该怎么做呢?

dig*_*dog 15

您可以使用mach_absolute_time以纳秒为单位进行测量.

#import <mach/mach_time.h>

uint64_t startTime = 0;
uint64_t endTime = 0;
uint64_t elapsedTime = 0;
uint64_t elapsedTimeNano = 0;

mach_timebase_info_data_t timeBaseInfo;
mach_timebase_info(&timeBaseInfo);

startTime = mach_absolute_time();

//do something here

endTime = mach_absolute_time();

elapsedTime = endTime - startTime;
elapsedTimeNano = elapsedTime * timeBaseInfo.numer / timeBaseInfo.denom;
Run Code Online (Sandbox Code Playgroud)

参考: 技术问答QA1398:马赫绝对时间单位


Bre*_*don 11

这是我做的:

NSDate * start = [NSDate date];
// do whatever I need to time
NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
Run Code Online (Sandbox Code Playgroud)

输出将以秒为单位(带小数部分). NSDate虽然我不确定它们究竟有多精确,但它的分辨率是毫秒级.

如果您尝试计算的代码太快,请将其置于运行代码一百次的循环中.(当然,这假设您正在计时的代码没有副作用.)