用长脚本加速问题?

时间:2010-07-05 19:33:45

标签: javascript performance

我写了很多bookmarklet,并将它们放在meta-bookmarklet(目前为止> 20kb)中:

var uGlY_vArIaBlE=(function(){
  var d=document;
  var f1=function(){};
  var f2=function(){};
  …
  … /* lot of code here */
  …
  var f50=function(){};
});
uGlY_vArIaBlE();

我可以假设f50会'{知道'd=documentf1一样快吗?浏览器如何实际读取/解释脚本(从缓存注入或加载)?我似乎没有遇到任何重大延误。您可以分享的任何提示。

2 个答案:

答案 0 :(得分:2)

在同一级别的所有功能中,您的变量同样快。只有内部函数会失去一些速度,例如:

function f32(){
  function f33(){
    // to get d, we have to walk up 2 levels
    // so it is a bit slower to get it then
    // it is for f32
  };
};

更好的概念是:

(function( window, undefined ){ // <- no need to name it (can be anonymus)

var d = window.document;

function f1(){};
function f2(){};

// .............

function f50(){};

})( window ); // <- it will be executed immediately

文档和窗口都会更快,因为它们是局部变量。

答案 1 :(得分:0)

长脚本应该导致的唯一延迟是加载和解析。从磁盘加载脚本需要更长的时间(因为文件大小更大),解析脚本需要更长的时间才能执行(因为需要解析更多的代码)。

除此之外,你不应该有任何缓慢(除非你的算法需要优化,但这是一个完整的其他主题)