js-性能优化

来源:互联网 发布:ubuntu虚拟机镜像 编辑:程序博客网 时间:2024/04/30 01:57

以下内容来自读网上博客的总结,当笔记使用,只记重点,同时非常感谢乐于分享的博主们,是你们让我站在了巨人的肩旁上!

1、函数节流技术的主要思路是,通过一个定时器,阻断连续重复的函数调用。当然每个解决方案不是全能,有其局限性:

       实用条件:1、短时间内连续多次触发;2、大量的DOM操作;(DOM操作对cpu和内存的开销比较大)例如一个 mousemove 或者 IE 中 resize 事件的监听函数。

      注意事项:  对于我们自己内部使用的函数,这通常意义不大,也不推荐使用这个技术,它可能会丢失对某些数据的处理。

      意义:在于在用户察觉范围外,降低函数调用的频率,从而提升性能。

      使用模式:<1>、用一个类似命名空间那样的对象封装起来;如:

        

 var processor = {      timeoutId: null,       performProcessing: function(){              // 要执行的代码      },       process: function(){          clearTimeout(this.timeoutId);          this.timeoutId  = setTimeout(function(){              processor.performProcessing();          }, 100);      }  };
                         <2>、使用闭包;如:

function throttle(fn, delay) {  //fn表示 要调用的函数,delay表示 延时毫秒数     var timer = null;      return function () {          var context = this, args = arguments;          clearTimeout(timer);          timer = setTimeout(function () {          fn.apply(context, args);      }, delay);    };  }

javascript函数的throttle和debounce

2、GC的缺陷,GC时,停止响应其他操作,这是为了安全考虑。原文来自:http://www.cnblogs.com/hyddd/archive/2013/02/07/2908598.html

3、关于重绘和回流:DOM操作会导致一系列的重绘(repaint)、重新排版(reflow)操作。为了确保执行结果的准确性,所有的修改操作是按顺序同步执行的。大部分浏览器都不会在JavaScript的执行过程中更新DOM。相应的,这些浏览器将对对 DOM的操作放进一个队列,并在JavaScript脚本执行完毕以后按顺序一次执行完毕。也就是说,在JavaScript执行的过程,直到发生重新排版,用户一直被阻塞。原文来自:http://www.cnblogs.com/hyddd/archive/2013/02/07/2908960.html

4、JS特性性能缺陷及JIT的解决方案。原文来自:http://www.cnblogs.com/hyddd/archive/2013/02/06/2908110.html



原创粉丝点击