您的位置:首页 > Web前端 > JavaScript

js-性能优化

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  性能优化 function