Почему функция выбора 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 ('#Я бы')) ...

Есть идеи, пожалуйста?