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