【发布时间】:2015-02-26 13:54:17
【问题描述】:
我目前正在撰写关于 Web 性能的学士论文,刚刚发现了一些我没有预料到的结果。
正如 Paul Irish 或 jquery 本身所建议的,最好从 id 继承。
http://learn.jquery.com/performance/optimize-selectors/
所以我预计 $('.class') 应该比 $('#id class') 或 $('#id').find('.class') 慢。
我在 jsperf 上对其进行了测试,得到了一个非常有趣的结果:
看起来它真的取决于浏览器,但我真的没想到 $('.class') 表现得这么好,特别是在 Chrome 上它比那些从 id 下降的人快得多。
下面的解释对我来说很有意义,但为什么这些浏览器的差异如此之大。引擎有那么不同吗?
不同之处在于,当使用单个类或 id 查找时,可以使用 getElementsByClassName 和 getElementById,它们比 querySelector 快得多。您会发现它在现代浏览器中的速度提高了 10 倍。
来源:http://jsperf.com/jquery-class-vs-tag-qualfied-class-selector/38
那么您对此有何看法?
【问题讨论】:
-
这(强烈)表明现代浏览器也缓存类条目(以及它们通常的快速 ID 查找表)。任何额外的代码开销(添加 id 搜索)都会减慢它的速度。很高兴知道。
-
添加了对下面唯一真正问题的答案,因为您已经暴露了一条非常有用的信息。 +1 :)
标签: jquery performance class jquery-selectors selector