升级jQuery UI 1.7.2到1.8.7会带来性能提升吗?

5

我的网站只使用了jQuery UI中的对话框和按钮。总体来说,一切都运行良好,但偶尔有些用户会遇到轻微的性能问题;在他们看来,系统的响应不够及时。

将jQuery 1.4.2升级到1.4.4确实起到了很好的作用,因为我的代码中有许多find()/filter()调用。那么,我应该期望从升级jQuery UI中获得一些性能上的好处吗?


你自己有进行过任何测试吗? - treeface
你的代码中有使用 setInterval 吗?如果是这样,请尝试重构它。也许可以考虑使用 DOMNodeInserted 或 jQuery.live 方法。 - troynt
3个回答

5
关于升级库的事情,有几件事情需要考虑。
  1. 升级难度。很多时候,如果只是小版本升级,你不会看到任何API变化或其他类似的事情。这应该是一个相当平稳的过程来执行升级。在这种情况下,我看不出为什么你不应该执行升级。
  2. 在进行更大版本的升级时,您需要考虑可能导致升级到新版本库花费更长时间的API更改。这可能不仅仅是“放入新库就可以了”的简单想法。话虽如此,我通常尽可能保持我的库最新。是的,现在可能需要稍微多做一点工作,但从长远来看,持续升级库比每5年做一次升级更容易。
至于如果升级到1.8.7后你将看到的性能改进类型,请查看发布说明。不仅您应该看到改进,而且还应该有更多功能可用。

说了这么多...

很多时候,如果改进使用库的代码,性能会得到更好的提升。更好的算法、更好的结构使用等等可以显示比仅仅升级库更好的提升。我建议在考虑升级jQueryUI库的同时也要考虑这些方面。


1
总的想法是“为什么它不能至少和以前一样好呢?”这正确吗? - d0rc
@d0rc - 大致上是这样。只要API的更改没有昂贵的升级成本,我会选择它。 - JasCav
@d0rc - 没错,只要它是稳定版本。 - ifaour

0

我会先调查你的代码。

尽可能使用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屏幕,并编写了一个服务器端脚本,计算系统在夜间执行了多少次成功运行等等。 - d0rc

0
发布说明称它更轻量级 - 我猜这也有助于它变得更快。

1
“轻量化”可能意味着很多不同的事情。例如,它可以循环滚动以使代码更小。官方发布说明指出,框架变得更加模块化,甚至可以选择要包含在自定义编译中的模块。但是,这也可能导致在访问内部对象时进行一些额外的检查,检查类是否可用等等。因此,对我来说,现在不清楚jqueryui是否运行更快了。 - d0rc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接