【问题标题】:Speed test between Javascript frameworks reliable?Javascript框架之间的速度测试可靠吗?
【发布时间】:2009-08-09 11:47:36
【问题描述】:

这很有趣,这个网站运行速度测试并比较所有这些;

  • PureDom
  • jQuery 1.2.6
  • jQuery 1.3.2
  • 原型 1.6.0.3
  • MooTools 1.2.2
  • qooxdoo 0.8.2
  • 道场 1.2.3
  • 道场 1.3.1
  • YUI 2.7.0

Javascript frameworks Speed Comparison

基于此,最新的 jquery 版本似乎比旧版本快 2 倍,但即使是最新的 jquery 在 IMO 上也表现不佳

提问时间:
1.所以我的问题,我是新手 javascript,你觉得这个测试 是不是很准确?
2. 如果是,这是否意味着 在性能方面的任何事情或 是不是很明显?

【问题讨论】:

    标签: javascript jquery frameworks performance


    【解决方案1】:

    PureDom 测试有时被列为较慢,因为某些框架让我对测量的准确性有些怀疑。或者我猜是网站制作者的编程能力:P

    尤其是在看到这些数字之后,我想说功能、易用性和社区支持比性能差异更重要。使用你喜欢的东西,如果你碰巧不得不做一些非常依赖性能的事情,那就自己动手吧。

    【讨论】:

    • 在我的机器上,PureDom 从来没有一个比这更慢的测试
    【解决方案2】:

    流行的 JavaScript 库的性能绰绰有余。这也很大程度上取决于您对它们所做的事情:尽管 jQuery 可能“在纸上”很快,但它是一个库,您可以轻松地使用它来无意中创建非常慢的代码。例如,很容易用它进行大量低效的 DOM 修改。

    由于库都很快,所以对我个人而言重要的是库本身的开发速度和适用性。有些比其他更适合某些事情。

    【讨论】:

      【解决方案3】:

      您需要选择一个满足您需求的库。

      • 它是否使节点(集)选择变得容易
      • 它是否使 DOM 操作变得容易
      • 它是否使事件绑定变得容易
      • 它是否使基本动画变得简单
      • 它是否让 AJAX 变得简单
      • 在上述过程中是否修复了 IE 错误?
      • 它可以扩展吗?有可用的插件吗?
      • 是否有文档、支持和开发者社区

      找到适合您的库并继续努力。随着时间的推移,您和库发布者都会找到最大化代码性能的最佳方法。

      【讨论】:

        【解决方案4】:

        我不会太在意他们。他们不遵循最佳实践,根本没有优化。

        以“make”jquery 1.3.2 测试为例(代码如下)

        如果你去here 并打开fireBug,你会看到我已经将他们的方法与最好的方法进行了比较。差异是惊人的。

        为了清楚起见,我称它们为 makeBad 和 makeGood。结果如下:


        (来源:gyazo.com

        结论:用一撮盐来衡量结果。它们不是现实世界的例子

        "makeBad": function(){
                for(var i = 0; i<250; i++){
                    $("<ul id='setid" + i + "' class='fromcode'></ul>")
                        .append("<li>one</li><li>two</li><li>three</li>")
                        .appendTo("body");
                }
                return $("ul.fromcode").length;
            },
        

        它根本没有优化。您不应该附加到循环内的 dom。最好推送到一个数组,然后追加一次到 dom。最好写成下面这样。

        "makeGood": function(){
                   var domBuilder = [];
        
                  for(var i = 0; i<250; i++){
                     domBuilder.push("<ul id='setid" + i + "' class='fromcode'>")
                     domBuilder.push("<li>one</li><li>two</li><li>three</li>")
                     domBuilder.push("</ul>")
                  }
        
                  $('#body').append( "<div>" + domBuilder.join() + "</div>");
                  return $("ul.fromcode").length;
            },
        

        【讨论】:

        • 那么您只测试 1 (one) append(),而不是 250。这根本不是同一个测试。当然,它更快,但这不是重点,因为您的优化不是特定于框架的。
        • 但是忽略结果的原因仍然成立,因为它们一文不值。
        • 这是重点。问题是他是否应该注意到结果。答案是否定的,以上是为什么!
        • 而且这些测试并不是一个公平的比较。例如,Dojo 在其测试中使用 dom 方法。
        【解决方案5】:

        首先,该测试是一个纯粹的理论测试,只是速度而不是其他任何东西(没有计算内存使用量,没有实际使用等),此外,库中最重要的不是理论速度, itś 功能和支持。

        其次,在性能规模上,所有库都足够快,可以做任何你需要它做的事情,是程序员让它变慢了。

        最后,我个人的意见是,你应该使用最新版本的 jQuery,因为它的可用性(CSS3 选择器)和简单的 AJAX 实现。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-27
          • 2011-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多