【问题标题】:Speed issues with a long script?长脚本的速度问题?
【发布时间】:2010-07-06 03:44:55
【问题描述】:

我写了很多书签,我把它们放在一个元书签中(到目前为止>20kb):

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

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

【问题讨论】:

  • 请不要添加你所做的那么多空白。
  • 感谢 2 格式化它的人。我的 * 电话 * 浏览器没有工作 2 或者我只是厚。
  • 所有答案都很好。我会勾选第一个,因为它是。谢谢大家。
  • 我怎么猜的!我的 手机 浏览器即使在“桌面模式”下也不会让我点击勾号——它不是“激活的”——而且我没有个人电脑,就是这样。

标签: javascript performance


【解决方案1】:

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

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

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

【讨论】:

  • galambalazs 为什么参数“未定义”?
  • 因为缩小器可以缩小它,并且定义你自己的 undef 可以防止 3rd 方代码破坏你的。
【解决方案2】:

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

除此之外,您不应该遇到任何缓慢(除非您的算法需要优化,但这是另一个话题)

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多