12

我尝试找到答案,并且找到了相关问题,虽然他们证实了我的发现(一个多选择器调用比多个单选择器调用慢),但他们都没有告诉我原因。

基本上,当您运行此代码时:

$("#one, #two").hide();
$("#one, #two").show();

针对此代码:

$("#one").hide();
$("#two").hide();
$("#one").show();
$("#two").show();

那么后者会快 50% 左右。

但是,一旦我们添加了第三个选择器,性能差异就会快 39%。

第四个选择器差异:快 26%。

第五:快 30%。

第六:快 31%。

十:快 31%。

(请注意,这些值的范围似乎在 5% 左右)

所以我们得到如下所示的东西:

在此处输入图像描述

性能似乎稳定在 6 个选择器左右。它似乎从来没有比通过一个电话来做每个人慢 31% 来“更快”。这是为什么?

就个人而言,我喜欢在每次调用时使用多个选择器,但它似乎对性能有(相对)较大的影响。这个(不)什么时候适合使用?

4

1 回答 1

6

在这两种情况下,您都对 ID 进行操作,因此可以将其转换为本地getElementById调用。

但是,在第一种情况下,必须做 2 件额外的事情

  1. 必须处理逗号,因此涉及额外的解析
  2. 必须合并 2 个结果,jQuery 通过该操作断言它们以与 DOM 中相同的顺序返回

我猜第二次手术花费的时间最多。

于 2013-07-19T18:56:03.117 回答