Google Closure Library的基准测试

时间:2011-06-20 19:41:37

标签: javascript jquery performance dojo google-closure-library

当我搜索Javascript库的性能时,我得到很多站点显示以下流行库之间的性能比较

  • jQuery(非常慢)
  • 原型(在IE中非常慢)
  • Dojo(来到DOM时最快)
  • ExtJs(平均值)
  • Micro JS(缓慢但可以)

但在任何基准测试中,Google Closure Library都包含 NOT 。它是否与其他任何标准库不同,据说它是一个程序式库。

我需要一些关于Closure库性能的基准测试。并且想要一个关于“在初学阶段使用dojo并在某个中间阶段使用jQuery时切换到Closure库的建议”的建议“

谷歌发布它在其所有应用程序(如Gmail等)中使用关闭库...性能非常好。这是因为图书馆吗?可以在JS中编写OO代码的中间javaScript编码器是否可以将Closure库用于非常高的级别,或者建议继续使用DOJO。

3 个答案:

答案 0 :(得分:7)

关闭库

Closure Library非常接近Dojo的风格 - 实际上,当它最初开发时,作者从Dojo中获取灵感。

然而,Closure库的速度和功能来自Closure Compiler,它大大优化了JavaScript程序,以消除所有瓶颈(例如导航命名空间链)。

我个人不喜欢它,因为它减损了基于Dojo类的构造(仅仅是为了满足编译器)的美感,所有那些goog.kitchen.sink.getMeACupOfTeaSoICanRelax()长名称空间使得编写(和阅读)JavaScript程序一个皇家的痛苦 - 长编辑器都被编译器优化掉的事实并没有让我(因为你)可以过度使用它们(对我来说)。

此外,它对尝试使JavaScript程序看起来尽可能多的OOP(可能是因为谷歌中有大量的Java程序员)的过分意味着过度依赖OOP概念,如属性获取者和设置者以及避免许多有用的(和独特的)JavaScript功能,如mixin's。如果您是一名学习使用JavaScript编程的Java程序员,那么您将使用Closure Library在家中。这并不会让它有点优雅。

然而,它确实提供了一个工业实力环境坚如磐石 - 因为Google已经用它构建了 HUGE 网站。这是(在我个人看来)坚实而且运作良好的东西,但看起来很难看。

然而,Dojo也是坚如磐石的,但由于它是一个开源开发项目,因此更加不稳定。您决定是否要切换。

在Closure Compiler和Dojo

实际上,您也可以在高级模式下使用Dojo和Closure Compiler。有关如何操作的说明,请参阅this link。基于我自己的测试,Closure Compiler编译的程序通常比缩小版本小25%(由于死代码消除),对于简单页面运行速度提高约20-30%,对于大页面运行速度提高约20-30%。

一般的图书馆速度

其他图书馆都有自己的特点和怪癖,每一个都平衡了可用性,灵活性和功能与性能。例如,jQuery在途中创建了许多jQuery对象,并且性能下降,尤其是在旧版浏览器上。但是,现代浏览器,尤其是谷歌浏览器实际上进行了优化,因此使用jQuery的性能最低限度。

您实际上需要问自己为什么您需要JavaScript才能快速运行。大多数现代浏览器已经非常快,因此对于库的选择而言,它实际上并不是一个非常重要的考虑因素。最好根据它是否适合您(以及您手头的任务)选择您的库,而不是在浏览器中运行速度是否快10ms。

如果您正在为移动设备编写网站,或者编写HTML5游戏,您可能需要挤压最后一滴性能(在游戏中)和/或尽可能多地节省资源(在移动设备中)。在这种情况下,我发现使用Dojo然后使用Closure Compiler进行编译会产生这种场景的最佳组合之一。

答案 1 :(得分:1)

很高兴用一些数据支持这个。有谎言,统计和基准。例如,您可能会问自己为什么框架x比框架y慢。但总的来说,基准测试并不能反映现实世界的情景,最终会变得有趣,但却无用。我已经使用jQuery几年了,我没有遇到过慢的情况,或者它对可用性有任何影响。

我的代码太慢,你需要优化它。然后,您可以从该代码中对甜蜜耶稣进行基准测试,分析和调试。像gmail这样的东西可能会有这样的待遇。因此,由于关闭,gmail可能不会很快,但因为智能编程而快速。

如果你害怕代码慢,你可能想要学习通用的javascript优化方法,并且你将成为一个快乐的任何框架的露营者。

编辑:关闭 当你构建大而复杂的时候选择闭包可能有几个优点:有一些很好的带宽优化工具,用于管理更复杂的应用程序的工具。有关如何编写正确代码的良好指导,以及检查您是否遵循这些指导原则的工具(封闭linter,非常有趣)。有一个很好的模板系统(可能不会提高你的性能本身)和依赖管理的东西。如果你想整合这些工具,或者建立它,我会说它去吧,否则,你可以放松一下,并对你对道场的选择感到满意。

答案 2 :(得分:1)

  

在初学者阶段使用dojo,在某个中间阶段使用jQuery

你有错误的方法。 Dojo比jQuery更先进。 jQuery本身适合初学者。

  

可以在JS中编写OO代码的中间javaScript编码器是否可以将Closure库用于非常高的级别,或者建议继续使用DOJO。

任何一个库都可以使用。花几个小时玩谷歌关闭,看看你是如何找到它的。我怀疑除了谷歌图书馆之类的谷歌图书馆的一般轻松集成之外还有那么大的差异。