Я думаю, что вы уже ответили на свой вопрос с помощью jsperf. Если скорость действительно важна для вас в конкретной операции, и этот тест является верным показателем того, что вам нужно, то проведите свой собственный тест для getElementsByClassName
и используйте его, если он доступен, так как он показывает в 400 раз быстрее в вашем jsperf.
У вызовов jQuery есть разумные накладные расходы, которые вы можете увидеть, если вы когда-нибудь пройдете через них. Я мог представить себе в небольшом документе, что эти накладные расходы могут исказить ваши результаты jsperf таким образом, который не будет столь заметен в документе с гораздо большим DOM - поэтому я бы посоветовал вам проверить свои результаты с гораздо большим DOM это может быть более типично для документов, которым вы будете называть это.
Согласно этому документу , jQuery должен использовать getElementsByClassName
для простого селектора класса.
Редактировать: Я прошел через этот вызов функции в jQuery $('.select')
. Он использует getElementsByClassName для внутреннего использования, но есть много накладных расходов, прежде чем он туда попадет (включая даже выполнение сложного регулярного выражения) из-за невероятной общей природы jQuery (он должен проверить множество вещей, прежде чем выяснить, что вам нужно простой селектор имени класса).
Я думал, что если вы добавите большой DOM к своему jsPerf, разрыв в производительности может сузиться, потому что накладные расходы на установку jQuery будут намного меньшей частью общего времени выполнения, но я не вижу особых изменений. getElementsByClassName('.selector')
, вызываемый сам по себе, просто намного быстрее, чем jQuery('.selector')
.