2014-12-07 33 views
-1

我有一個用JavaScript編寫的計時器對象,我的目標是使它更高效,更快,因此儘可能準確。JavaScript的代碼效率和速度比較 - 分配與條件檢查

我的一個擔心與一般可應用於所有編碼方式的特定情況有關,我確定之前已經詢問過,我只是不確定在搜索時使用什麼術語。

我的問題是這兩種情況哪種更快/更有效?

案例1:在代碼的重複部分中爲變量分配一些值,即使知道該值只需分配一次即可。

情況2:檢查變量的值,從而有條件地分配它。

function runOnce(){ 
    timer.someValue = { //some object...}; 
} 


function someRepeatedFunction(){ 
    timer.someValue = null; 

    //vs 

    if(timer.someValue){ 
     timer.someValue = null; 
    } 
} 

哪種情況會更快?

+2

這是微型優化。差異可以忽略不計。你會浪費更多的時間來確定這個答案,你的表現將會得到改善。 – 2014-12-07 16:55:57

+0

好吧,我可以理解。在那種情況下,我會選擇更少的代碼行。儘管出於好奇,如果從理論方面確實存在明確的答案,我不會介意知道它。當然,我正在編寫一個計時器,所以我知道我可以設置一個測試用例,實際上......時間。 – krb686 2014-12-07 16:59:15

+0

@ krb686:這就是你應該做的。 – 2014-12-07 17:17:31

回答

0

微優化#1

如果硬要條件檢查,我會繞過使用==運營商(即我認爲Java腳本會自動使用),並去爲===操作。

身份===操作其行爲與平等==運營商除了沒有類型轉換完成後,和類型必須要考慮equal.The ==運營商將做任何必要的類型轉換後相等比較相同。 ===運營商不會做轉換,所以如果兩個值不是相同的類型===將簡單地返回false。在這種情況下,===會更快,並且可能會返回與==不同的結果。在所有其他情況下,性能將是相同的。

微優化#2

關於分配&條件檢查之間的選擇,它似乎是合乎邏輯去分配使用全局變量的情況下(如一個你似乎可以用) 。除非您打算處理else情況下的案例,否則不需要持續檢查對象的當前類型或其值。