我正在使用 DispatchTime.now() 来测量事件之间耗时。有时它工作正常,但有时它生成的值远低于我的预期。
我目前的使用情况:
var t = DispatchTime.now()
var pt = DispatchTime.now()
// called when an event happens
t = DispatchTime.now()
var elapsed = Double(t.uptimeNanoseconds - pt.uptimeNanoseconds)
elapsed *= 32768/1000000000
pt = t
这样 t 和 pt 是当前时间和以前的时间,elapsed 以纳秒为单位取差值,转换为双倍,并缩放为 1 秒 = 32768。当此技术失败时,记录的数据比预期的小约 100 倍.缩放不是问题,我已经检查了 t 和 pt 的原始值。我的假设是运行 DispatchTime 的时钟运行速度较慢,可能是因为调试,但总的来说我认为 iOS 会补偿这样的事情。
最佳答案
正如@AlexanderMomchliov 所建议的那样,NSDate 是一种比 DispatchTime 更好的方法。
实现为:
var t: TimeInterval = 0
var pt: TimeInterval = NSDate().timeIntervalSinceReferenceDate
// called when an event happens
t = NSDate().timeIntervalSinceReferenceDate
var elapsed: Double = t - pt
elapsed *= 32768
pt = t
关于ios - Swift 3.0 中不准确的 DispatchTime.now(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173525/