1
我使用DispatchTime.now()来测量事件之间的已用时间。有时它可以正常工作,但偶尔它会产生远低于我预期的值。Swift 3.0中不准确的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
使得吨和Pt当前和以前的时间,经过的发生在纳秒的差,转换为加倍和体重秤如1秒= 32768。当这种技术无法记录的数据比预期的小约100倍。缩放不是问题,我已经检查了t和pt的rawValue。我的假设是,运行DispatchTime的时钟运行速度较慢,可能是因为调试,但总的来说,我认为iOS会补偿这样的事情。
DispatchTime是为...调度。它受到各种与墙(“常规”)时间的偏差的影响,例如由OS完成的定时器合并。 – Alexander
谢谢亚历山大。你能指定你的意思吗?我看到有人使用DispatchTime的例子,它看起来很干净,但我认为这不是最好的选择。你有建议测量真实时间? – jonwooding
Grand Central Dispatch是Swift的多线程框架。除了指定'Dispatch'作业的时间以外,使用'DispatchTime'完全不合适,并且会导致这样的结果。我的解决方案取决于我想要做什么,我想要的精度类型,我愿意为它支付的性能数量等。 – Alexander