JavaScript算法与流程控制



循环迭代(2012/11/11)

//原始版本

for (var i=0; i < items.length; i++){ 

  process(items[i]); 

}

//最小属性查找,节省25%

for (var i=0, len=items.length; i < len; i++){ 

  process(items[i]); 

}

//最小属性查找并反转,节省50%

for (var i=items.length; i--; ){ 

  process(items[i]); 

//Duff's Device减少迭代次数

var iterations = Math.floor(items.length / 8), 

startAt = items.length % 8, 

i = 0; 

do { 

  switch(startAt){ 

    case 0: process(items[i++]); 

    case 7: process(items[i++]); 

    case 6: process(items[i++]); 

    case 5: process(items[i++]); 

    case 4: process(items[i++]); 

    case 3: process(items[i++]); 

    case 2: process(items[i++]); 

    case 1: process(items[i++]); 

  } 

  startAt = 0; 

} while (--iterations); 

//Duff's Device取消switch

var len = items.length,

  iterations = Math.floor(len / 8),

  leftover = len % 8,

  i = len-1;

while(leftover-- > 0){ 

  process(items[leftover]); 

};

while(iterations-->0){ 

  process(items[i--]); 

  process(items[i--]); 

  process(items[i--]); 

  process(items[i--]); 

  process(items[i--]); 

  process(items[i--]); 

  process(items[i--]); 

  process(items[i--]); 

};



参考地址:

http://blog.sina.com.cn/s/blog_53a5865c0100if8y.html


http://oreilly.com/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html


http://home.earthlink.net/~kendrasg/info/js_opt/jsOptMain.html




你可能感兴趣的:(JavaScript算法与流程控制)