[英]javascript execution time varies
我試圖找出捕獲語句執行時間的最佳方法。 例如,js stmt花費的時間是多少,例如if(txt =='abc')。 如果我使用console.time('test')/ console.endTime('test')對來計算,或者使用簡單的js代碼(如下所示)來計算時間,則每次執行代碼時控制台輸出都會變化。
在控制台上看到的差異有時也以毫秒為單位在1位數,2位數到3位數之間,即有時1 ms,60ms有時是800ms,這也是順序不一致的。 我什至嘗試只運行一次,然后關閉瀏覽器,然后再次運行它,以使其他GC和變量不會出現在畫面上,以免影響時間,但結果是相同的。 幾毫秒是令人難以理解的,但如此巨大的差異對於獲得清晰的時間而言是很大的。 那么,什么是最好的,一致的方法來讓口譯員執行時間呢? 我們如何找到最佳標准來證明以某種方式編寫或最好使用的stmt效果更好
var start = (new Date).getMilliseconds();
if(txt =='abc'){};
var diff = (new Date).getMilliseconds() - start;
console.log(diff);
* 所有測試均在FF中進行。 另一種不同的方法,例如getMilliseconds,getTime和console.endTime接二連三*
嗯..您正在使用兩個非常不同的函數來檢索當前時間戳。
Date.prototype.getMilliseconds()
返回比另一個(短)的數字
Date.prototype.getTime()
因此,通常這不是一個好主意,很可能是造成問題的原因。 如果要測量代碼中的內容,則應始終使用.getTime()
或更好的Date.now()
。 兩者都返回完整的時間戳號。
這里的要點是,在大多數情況下,執行該指令的時間少於0ms,所以我不明白為什么會得到這些差異。 如果我在計算機上運行:
for (x = 0; x < 100; x++) {
var start = (new Date).getMilliseconds();
if(txt =='abc'){};
var diff = (new Date).getMilliseconds() - start;
print(diff);
}
我得到:
0
0
0
0
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.