2011-04-21 76 views
0

的开销怎么会有时有巨大体的使用功能?巨大功能的开销是多少?

例如,考虑这段代码:

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

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

+1

你的意思是在内存或时间方面的开销? – quamrana 2011-04-21 14:52:44

+1

我倾向于说可以忽略不计,特别是如果我们谈论1个功能 – BiAiB 2011-04-21 15:05:25

+0

你应该创建自己的测试并看看。你可以尝试:http://jsperf.com/ – 2011-04-21 15:20:31

回答

3

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

您可以使用JavaScript分析器,比如一个内置的谷歌浏览器,这里是一个mini intro to the google chrome profiler

2

首先,产品如jQuery是建立在非常严重地使用闭合。 JQuery被认为是一段非常高性能的Javascript代码。这应该告诉你很多关于它使用的编码技术。

任何给定功能的准确表现,都将不同浏览器之间的不同,因为他们都有自己的脚本引擎,这些都是independantly书面和有不同的优化。但是他们都会做的一件事是试图对最常用的Javascript特性进行最佳优化。鉴于JQuery及其类似的前景,你可以打赌,关闭是非常严重的优化。在任何情况下,在最新一轮浏览器发布的情况下,他们的脚本引擎现在都具有足够高的性能,您很难在基本语言结构中找到任何导致重大性能问题的东西。

3

开销是一个静态函数声明不论大小可以忽略不计。唯一的性能损失来自函数内部定义的内容。

是的,你将有大的闭包含有很多变量,但除非你在函数中声明了几万个私有变量,或者执行该函数几万次,那么你将不会注意到有什么不同。

这里真正的问题是,如果你为多个较小的功能拆分功能,你会发现的性能提升?答案是否定的,实际上你应该看到一个小的性能减少有更多的开销,虽然你的内存分配应该至少能够收集一些未使用的变量。

无论哪种方式,JavaScript是最常只有陷入了明显昂贵的任务,所以,直到你看到一个问题,我不会理会优化。

+2

最后一行很关键 – Jason 2011-04-21 15:35:41