我想知道将消息发送到具有至少1ms准确度的对象需要多长时间.我该怎么做呢?
您可以使用mach_absolute_time
以纳秒为单位进行测量.
#importuint64_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;
参考: 技术问答QA1398:马赫绝对时间单位
这是我做的:
NSDate * start = [NSDate date]; // do whatever I need to time NSLog(@"time took: %f", -[start timeIntervalSinceNow]);
输出将以秒为单位(带小数部分). NSDate
虽然我不确定它们究竟有多精确,但它的分辨率是毫秒级.
如果您尝试计算的代码太快,请将其置于运行代码一百次的循环中.(当然,这假设您正在计时的代码没有副作用.)