簡體   English   中英

javascript執行時間各不相同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM