Почему функция выбора jQuery такая медленная по сравнению с нативными методами DOM
Я знаю, что эта тема вообще уже обсуждалась несколько раз, но я ищу более техническую и детальную информацию, чтобы понять, что на самом деле происходит.
Я разработал серию тестов, чтобы сравнить скорость jQuery 'самые основные селекторы#Я бы' а также '.учебный класс' к различным родным методам DOM.
Я хочу выяснить, почему именно таковы результаты.
Вот тесты:http://jsperf.com/jqueryspeed
Главное, что заметно, getElementById - самый быстрый из всех. Для сравнения я добавил оба jQuery ('#Я бы') и jQuery.fn.init ('#Я бы') в качестве тестов разница между ними заключается в том, что первый действительно создает целый новый объект jQuery, а второй выполняет только функцию-прототип и, следовательно, работает быстрее. Таким образом, разница между этими двумя понятна.
Однако основное отличие, которое я НЕ понимаю, заключается в огромном разрыве между скоростью getElementById и скоростью jQuery.fn.init, который имеет простой тест для обработки простого ('#Я бы') запрос определенным образом, возвращаясь к вызову самого getElementById.
Итак, почему, например, в Chrome этот метод примерно в 8 раз медленнее, чем нативный, хотя, по сути, он является просто оберткой для него?
Это также примерно в 3-4 раза медленнее, чем завернутый getElementById $ (document.getElementById ('#Я бы')) ...
Есть идеи, пожалуйста?