2010-08-06 6 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 –

+0

Является ли 'searchWin' не текущим окном? –

+0

Durilai - спасибо. Nick, searchWin - соседний IFrame. Я знаю, что getElementById должен быть быстрее, я просто не ожидал снижения производительности 100 раз. Кроме того, когда я попробовал Ext.get ('myID'); (Ext - библиотека ExtJs, также имеющая возможности выбора элементов), она выполняет точно так же, как getElementById. Даю мне 3 м раз. – Elijah

ответ

5

getElementById - родной метод. jQuery нет. jQuery делает вещи под капотом, чтобы компенсировать несогласованности браузера. Он делает getElementById после выполнения регулярного выражения и много чего.

Естественно, jQuery работает медленнее, потому что это обертывание.

jQuery будет считаться быстрым по сравнению с другими фреймами, поскольку это структура. Вы не можете сравнить родную функцию браузера с фреймворком, который абстрагирует собственные методы, встроенные методы всегда будут быстрее.

Смежные вопросы