我們有一個JavaScript函數,得到兩個事件的開始和結束時間:如何在JavaScript中以兩種方式比較NTP時間更新後的狀態?
var startTime = new Date().getTime();
// A long running task occurs
var endTime = new Date().getTime();
我們已經發現的問題在於,getTime()
似乎是依賴於系統時鐘。不幸的是,我們遇到了一些情況,用戶的時鐘在這兩個調用之間發生了變化,顯然是通過Windows NTP時間更新(例如,Windows出時間服務器以獲得準確的時間,然後將系統時鐘更改爲正確的時間)。因此,我們繞了這樣的事情:
startTime = 12:00:00
// 30 second task is kicked off
// NTP time update detects that the system is one minute ahead and corrects the clock
endTime = 11:59:30 // It ended before it began
有什麼辦法,我可以在這樣將生存NTP時間更新辦法比較兩個時間?我們的JavaScript應用程序無法查詢公司防火牆之外的任何服務器,因此自己調用NTP服務器是不可能的。
這不是一般的性能測量問題重複,因爲不是所有的用於測量時間的性能技術(=答案就這些問題)是不可知的NTP更新! 但是,http://stackoverflow.com/questions/313893/how-to-measure-time-taken-by-a-function-to-execute上的最高評分答案仍然是要走的路,因爲「[。 ..]與Date.now()不同,Performance.now()返回的值總是以恆定的速率增加,與系統時鐘無關(可能會手動調整或通過NTP等軟件扭曲)。 –