jQuery()比getElementById慢

时间:2010-08-06 20:18:37

标签: jquery performance

我正在运行一些性能测试,看看我是否可以直接使用jQuery而不是Ext的包装器。首先,我想将jQuery(#id)与doc.getElementById进行比较,但我必须做错事,因为jQuery(#id)的速度要慢得多。

var searchDoc = searchWin.document;
var jqSearchDoc = jQuery(searchWin.document);
for (var i=0; i<500; i++){
    var temp = jqSearchDoc.find('#myID'); //takes 1100ms
    //var temp = jQuery(searchDoc.getElementById('myID')); //takes 3ms
}

知道为什么未注释的行会慢得多吗?以及如何重写它?

1 个答案:

答案 0 :(得分:5)

getElementById是一种原生方法。 jQuery不是。 jQuery做了一些事情来弥补浏览器的不一致性。在进行正则表达式匹配后,它会getElementById

当然,jQuery更慢,因为它是一个环绕。

与其他框架相比,jQuery会被认为是快速的,因为它是一个框架。您无法将浏览器本机函数与抽象本机方法的框架进行比较,本机方法总是更快。