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