Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将大型IIAF拆分为较小的函数是否会提高性能?_Javascript_Performance - Fatal编程技术网

Javascript 将大型IIAF拆分为较小的函数是否会提高性能?

Javascript 将大型IIAF拆分为较小的函数是否会提高性能?,javascript,performance,Javascript,Performance,我在查看谷歌搜索页面时注意到他们做了如下操作: (function(){ window.google={}; // few keys (none of the keys is function) })(); // immediately after, same script tag (function(){ google.x = function(){ /* ... */ }; google.y = function(){ /* ... */ }; })(); // a

我在查看谷歌搜索页面时注意到他们做了如下操作:

(function(){
    window.google={}; // few keys (none of the keys is function)
})();

// immediately after, same script tag
(function(){
    google.x = function(){ /* ... */ };
    google.y = function(){ /* ... */ };
})();
// anonymous function invocations repeat

这样的拆分有可能提高整体性能吗?第二个问题-如果将每个函数放在单独的标签中,性能增益会有所不同吗?

没有性能优势,事实上,它应该稍微慢一点。通常,IIFE用于防止意外创建全局文件。本例中的IIFE部分无用,因为它正在设置全局变量

我怀疑这是因为有了base.html模板或类似的东西,并且动态添加了一些特定于应用程序/页面的脚本

我猜想base.html文件可能如下所示:

<body>
...
<script>
  {{> iife script="window.google={}" }}
  {{#each scripts}}
      {{> iife script=script }}
  {{/each}}
</script>
</body>
scripts.push('google.x = function(){ /* ... */ };');

这允许轻松创建具有所有相同默认设置/配置的新应用程序/页面。它还允许他们以一致的方式向页面添加脚本。

不,这应该不会有任何显著的区别。为什么您认为这样会更快?更多的代码需要解析、处理和评估。我看不出有什么好处。在某些情况下,当全局函数不关闭许多不必要的变量时,可能会有好处,但您的示例没有显示这一点。@Bergi,我认为这可能会更快,因为您分析的是小函数,执行它,同时执行代码的其余部分,即可以解析下一个函数。@ArturRychlewicz它不是这样工作的-整个代码被解析并检查语法错误,然后执行。但是,即使进程混合在一起,解析所有行和执行所有行仍然需要相同的时间。第一行可能会提前一点执行,这一点很难引起注意。