2010-08-06 53 views
0

我正在运行一些性能测试,看看我是否可以直接使用jQuery而不是Ext的包装。首先,我想比较jQuery(#id)doc.getElementById,但我一定是做错了,因为jQuery(#id)太糟糕了。jQuery()慢于getElementById

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

http://stackoverflow.com/questions/1854859/jquery-performance-wise-what-is-faster-getelementbyid-or-jquery-selector – 2010-08-06 20:24:11

+0

'searchWin'不是当前窗口吗? – 2010-08-06 20:32:35

+0

Durilai - 谢谢。 尼克,searchWin是一个相邻的IFrame。 我知道getElementById应该会更快,我只是没有预料到100倍的性能下降。另外,当我试着Ext.get('myID'); (Ext是ExtJs库也具有元素选择功能),它的执行方式与getElementById完全相同。给我3ms。 – Elijah 2010-08-08 04:29:53

回答

5

getElementById是一种本地方法。 jQuery不是。 jQuery在底层做了一些事情来弥补浏览器的不一致性。它做了getElementById后做正则表达式匹配和whatnot。

自然,jQuery比较慢,因为它是一个环绕。

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