【问题标题】:Does upgrading jQuery UI 1.7.2 to 1.8.7 result in a performance improvement?将 jQuery UI 1.7.2 升级到 1.8.7 会导致性能提升吗?
【发布时间】:2010-12-20 17:50:24
【问题描述】:

我的网站只使用来自 jQuery UI 的对话框和按钮。总的来说一切正常,但有时一些用户会遇到轻微的性能问题;系统的响应速度不如他们认为的那样。

从 jQuery 1.4.2 升级到 1.4.4 确实做得很好,因为我的代码中有很多 find()/filter() 调用。我应该期望升级 jQuery UI 带来一些性能优势吗?

【问题讨论】:

  • 你自己做过测试吗?
  • 您在代码中的任何地方都使用了 setInterval 吗?如果是这样,请尝试重构它。也许尝试使用 DOMNodeInserted 或 jQuery.live 方法。

标签: jquery performance jquery-ui upgrade


【解决方案1】:

在升级库方面需要考虑几件事。

  1. 这样做有多么困难。很多时候,如果是次要版本升级,您将不会看到任何 API 更改或类似性质的任何内容。执行升级应该是一个相当顺利的过程。在这种情况下,我看不出您有任何执行升级的理由。
  2. 如果要升级到更主要的版本,您需要考虑可能导致升级到新版本库需要更长时间的 API 更改。这可能不仅仅是“进入新图书馆,你就可以开始了”的简单想法。话虽如此,我通常会尽量使我的库保持最新。是的,现在可能需要做更多的工作,但从长远来看,持续升级库比每 5 年升级一次更容易。

至于升级到 1.8.7 后您将看到的性能改进类型,请查看release notes。您不仅应该看到改进,还应该有更多的功能可用性。

说了这么多……

很多时候,如果使用库的代码得到改进,性能改进会受到更好的影响。更好的算法,更好地使用结构等可以显示比仅仅升级库更好的改进。我会在考虑升级 jQueryUI 库的同时考虑这一点。

【讨论】:

  • 所以一般的想法是“为什么不应该至少和以前一样好”。对吗?
  • @d0rc - 差不多。只要 API 的更改没有昂贵的升级成本,我就会去。
  • @d0rc - 完全正确,只要它是稳定版本。
【解决方案2】:

发行说明说它更轻 - 我冒险猜测一下,这也有助于它更快一点。

【讨论】:

  • 打火机可能意味着很多不同的东西。例如,它可以循环滚动以使代码更小。官方发布说明状态框架变得更加模块化,甚至可以选择模块以包含在自定义编译中。但它也可能导致在访问内部对象时进行一些额外的检查,检查类是否可用等等。所以对我来说,不清楚 jqueryui 现在是否运行得更快。
【解决方案3】:

我会先调查你的代码。

尽可能使用 ID 而不是类。

通过缓存将选择操作保持在最低限度。 如果您在经常调用的块内执行此操作,则尤其如此。

例如:

if( $('#some-id').find('.foo').length > 0 ) {
  //do something with foos
  console.log($('#some-id').find('.foo'));
}

应该是

var $foos = $('#some-id .foo');
if( $foos.length > 0 ) {
  //do something with foos
  console.log($foos);
}

在您调查并测试代码之后。

我会继续升级,然后首先在所有浏览器中在您的本地计算机上重新测试。 如果一切正常,为什么不升级?

【讨论】:

  • 好的,谢谢。我知道这样的优化技巧,我正在编写代码以尽可能快地保持它,在不同的浏览器中测试各个部分的性能问题。我什至编写了一个应用程序,它将鼠标点击发送到 X 屏幕,以及一个服务器端脚本,用于计算在夜间执行系统成功运行的次数等等。
猜你喜欢
  • 2010-11-17
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多