巨大功能的开销是多少?

时间:2011-04-21 14:51:20

标签: javascript performance function

当使用具有巨大主体的函数时会有多少开销?

例如,考虑一下这段代码:

(function() {
    // 25k lines
})();

它如何影响加载速度/内存消耗?

5 个答案:

答案 0 :(得分:3)

说实话,我不确定,帮助回答你问题的好方法是衡量。

您可以使用javascript探查器,例如Google Chrome中内置的探测器,这里是mini intro to the google chrome profiler

答案 1 :(得分:3)

答案 2 :(得分:3)

无论大小如何,静态函数声明的开销都可以忽略不计。唯一的性能损失来自函数内部的定义。

是的,您将拥有包含许多变量的大型闭包,但除非您在函数中声明数万个私有变量,或执行该函数数万次,否则您将不会注意到差异。< / p>

这里真正的问题是,如果将该功能拆分为多个较小的功能,您是否会注意到性能提升?答案是否定的,你应该看到一个轻微的性能减少,但开销更多,尽管你的内存分配至少应该能够收集一些未使用的变量。

无论哪种方式,javascript通常只会被明显昂贵的任务所困扰,所以在看到问题之前我不会打扰优化。

答案 3 :(得分:2)

那几乎是不可能回答的。 如果你真的想了解内存使用情况,自动垃圾收集和关闭的其他细节,请从这里开始:http://jibbering.com/faq/notes/closures/

答案 4 :(得分:2)

首先,像JQuery这样的产品是建立在使用闭包的极其重要的基础之上的。 JQuery被认为是一个非常高性能的Javascript代码。这应该告诉你很多关于它使用的编码技术。

任何给定功能的确切性能在不同浏览器之间会有所不同,因为它们都有自己的脚本引擎,这些引擎都是独立编写的,并且具有不同的优化。但他们所做的一件事就是尝试对最常用的Javascript功能进行最佳优化。鉴于JQuery及其类似的预测,你可以打赌闭包是非常优化的。

无论如何,随着最新一轮的浏览器发布,他们的脚本引擎现在都具有足够高的性能,你很难在基本的语言结构中找到任何可以解决重大性能问题的东西。