高效能JS筆記4——演算法和流程控制

欣靜賞悅發表於2016-10-06

一、迴圈

for、while、do while三種迴圈的效能都沒有多大區別。foreach 的效能較其他三種差 。

既然迴圈沒有多大區別,注意迴圈內的程式碼控制。

減少迭代次數。

減少迭代工作量。

推薦寫法:

for(int i=0, l = array.length; i < l; i++)
{
   int v = array[i]; 
};

二、條件語句

if else 和 switch語句較少時,if else較易讀。分支多時,從效能或易讀上都傾向於switch。

優化條件語句:

最小化到達正確分支前的條件數量;

把多個if else 組合成一個;

把多個if else 組合成一個系列巢狀的組合;

將查詢值存放到查詢表或陣列,減少查詢次數。

三、遞迴

使用Memoization快取前一個計算結果供後面計算使用。

使用Memoization重寫 factorial()函式,程式碼如下:

funtion memfactorial(n)
{
    if(!memfactorial.cache)
    {
        memfactorial.cache={
            "0":1, "1":1
        };
    }
    
    if(!memfactorial.cache.hasOwnProperty(n))
    {
        memfactorial.cache[n]= n* memfactorial.cache[n-1];
    }
    
   return memfactorial.cache[n];
}

 

相關文章