2010-08-06 59 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將被認爲是快速的,因爲它是一個框架。您無法將瀏覽器本機函數與抽象本機方法的框架進行比較,本機方法始終會更快。