Google Closure Library的基准测试

Boo*_*jaa 6 javascript performance jquery dojo google-closure-library

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

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

但在任何的基准,Google Closure Library包括在内.它是不是像任何其他标准库一样,据说它是一个程序式库.

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

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

Ste*_*ung 7

关闭图书馆

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

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

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

此外,它试图使JavaScript程序看起来尽可能多的OOP(也许是因为Google中有大量的Java程序员)意味着过度依赖OOP概念,如属性getter和setter以及避免许多有用的(和唯一的) )mixin的JavaScript功能.如果您是一名学习使用JavaScript编程的Java程序员,那么您将使用Closure Library在家中.这并不会让它有点优雅.

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

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

在Closure Compiler和Dojo上

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

论一般图书馆的速度

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

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

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

  • @Boopathi Rajaa,迈克尔博林出色的"关闭:权威指南".此外,还有互联网上的讨论(你可以搜索),这些讨论描述了谷歌在早期内部如何讨论采用Dojo或编写自己的代码.goog.query是dojo.query的一个端口,Closure的许多结构与Dojo非常相似.我认为这也是因为在那一年,Prototype和jQuery不存在,Dojo是**JavaScript库. (2认同)
  • 另外,请尝试以下链接:http://erik.eae.net/archives/2009/11/05/22.27.29/ (2认同)