【转】jQuery 性能

 

 

结论是来自测试框架taskspeed的结果。jQuery每次升级都会提到某某方法性能比原来提升了多少多少,里面都会提到这个框架。这结论可能会让许多人大跌眼镜吧,不过也不奇怪,因为中国是美工主导前台,那些人的英语水平都比较一般,很少能主动到外国博客了解最前沿最尖端的javascript技术。另,jQuery的易上手也很容易给人一个错觉,认为它什么是好的,既然它现在被捧得这么红。不过被网络捧红的人有时不单单是包建斌(烧饼帅哥),也有可能是芙蓉姐姐。现在特意声明一下,jQuery肯定不是后者,各位jQuery死忠请稍安勿燥!

现在简单介绍一下各大javascript框架,各位就知性能一向不是jQuery的得意之处。总归来说,jQuery是设计师的javascript框架,它的CSS选择器对设计师来说是非常亲切Prototype.js则是Rubyer的javascript框架,它与著名rails捆绑在一起,另,它也是早些年最受青睐的javascript框架,现在它的影响力还在于jQuery之上。学Python的人可以选择MochiKit,同为十大框架,不过它好像要借助dojo的包机制。MochiKit里面有一个叫Deferred的类,被日本高手cho45发展为一个异步框架JSDeferred,天天被人邀请做演讲。不过,国内被墙得厉害,加之国人对日本人的仇视与偏见,知之人甚少。dojo的后台非常厉害,什么AOL,IBM,SUN,java的三大框架之一Struts就是用它的。作为最企事业化的产物,它的性能当然是不容忽视,不过它的野心太大了,除了拥有一套完整的UI组件外,还向图形,本地储存伸出魔爪,导致战线过长,发展缓慢。qooxdoo把自己定义为GUI类库,国内估计也很少人认识它,它拥有最优质的插件mootools是现在最被看好的类库之一,优雅的OO机制与靠大量函数堆砌在一起的jQuery站于两个巅峰此外还有YUI与Ext,雅虎以前是巨有钱,有线可以招许多聪明人弄一些好东西。YUI就是其他的产物之一,但聪明人太多了,互相制肘,于是有人跑出来搞了Ext。好了,介绍就到此为止。我们可以发现jQuery是个非常特别的框架,首先它没有什么后台,其次它把自己定义为一个轻量级的类库。轻量级有级量级的好处,重量级有重量级的好处,怎么大家都如此怕重量级呢?总有人问这样废问题——“这个库大不大?”怕什么啊!再大也没有美工砌的那几张图片大由于jQuery不搞UI(官网那个UI只是乌合之众),许多性能问题没有突现出来。因为一涉及到界面,就意思着要创建数十个或上百个DOM元素,性能的问题就被放大了我 想,看过jQuery源码的人都好头晕,那些方法互相调用得太厉害,而且为了使用已定义的jQuery方法,这些方法会再次把分解得来的DOM元素再包装 成jQuery对象,巨吃内存。另,整个库放在一个自动执行函数(闭包),另闭包里面还存在闭包,闭包意味着是一重作用域(在主流类库中,好像就 jQuery这样做吧)。再者,一个方法同时作为写方法与读方法,也让它在性能比较很吃亏(一个方法当许多方法来用,导致函数体很长,函数体长意味着逻辑 复杂,判定多,调用外围作用域的函数的机会多,使用循环的机会多,这些都是要消耗时间与内存的)……

最后我们看结果吧:

在所有浏览器中性能最好的是qooxdoo 0.8.2。

在各个浏览器的比较结果:

最后说一句,流行的东西不一定是最好的。jQuery最大的卖点是好用,易上瘾,就像鸦片一样。或者jQuery的易用性和其他庞大的插件能一时帮你解决了问题,但千万别忽略了学习javascript与DOM的基础API与其他类库。

posted @ 2013-03-24 16:05  拉拉杂  阅读(192)  评论(0编辑  收藏  举报