zoukankan      html  css  js  c++  java
  • 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都快

  • 相关阅读:
    token的时限多长才合适?
    WebFTP安装说明
    维度表和事实表的区别
    互联网产品mysql数据库设计总结
    网络的介数中心性(betweenness)及计算方法
    python中的编码与解码
    增强学习Reinforcement Learning经典算法梳理3:TD方法
    Mybatis 参考
    防御CSRF、XSS和SQL注入攻击
    转:PriorityQueue
  • 原文地址:https://www.cnblogs.com/thonrt/p/6589749.html
Copyright © 2011-2022 走看看