web性能优化--算法优化(四)

  • 避免for-in
  • 把数组长度保存在局部变量中
  • 较少迭代次数(Duffs Device)
  • 基于函数的循环比基于循环的迭代消耗性能更多
  • 优化if-else,一般switch比if-else速度快(hash tabel)

  1)避免用for-in

    常见的循环有:for、do-while、while、for-in。for-in循环比较慢,因为每次迭代操作时会同事搜索实例或原型属性。

  2)把数据数组长度保存在局部变量中 

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

  3)减少迭代次数(Duffs Device)http://blog.csdn.net/cengjingcanghai123/article/details/21231865

<script type="text/javascript">  
  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);  
</script>  

  4)基于函数的循环比基于循环的迭代消耗性能更多。例如:for循环迭代比forEach函数迭代性能高

  5)优化if-else,一般switch比if-else速度快,但是在判断条件多时,使用查找表比if-else和switch都快

原文地址:https://www.cnblogs.com/thonrt/p/6589749.html