Я знаю, что я просто являюсь OCD в течение нескольких миллисекунд времени на производительность, но мне просто интересно, почему для меня справедливо следующее. Кажется, это противоречит моей логике.Производительность селекторов jQuery
Я в настоящее время есть DIV, который имеет затухает изображение внутри по наведению:
$('div.someclass').hover(function() {
$(this).children('img').fadeOut(function(){
// do something
});
}, function() {
// do something
});
После некоторого тестирования (циклически селекторы 1000 раз, принимая в среднем 9 тестов) я использовал 3 разных селекторов и пришел к выводу о том, что скорость в этом порядке:
$(this).children('img')
работает быстрее всех - около 400 мс;$('img', this)
- avg около 900ms; и$(this).find('img')
работает медленнее всего - в среднем около 1000 мс
Это идет вразрез с логикой, что наличие двух вызовов функций будет медленнее, чем один. Кроме того, я прочитал, что внутри, jQuery преобразует второй случай в третий случай, так что третий случай будет медленнее ?.
Любые мысли?
Также хочу указать, что $ ('img', это) не обязательно является одним вызовом функции, так как упомянутый процесс преобразования может также вызвать любое количество функций. –
Ну, подсчет количества вызовов функций при использовании jQuery бессмысленен, потому что внутренне он вызывает от десятков до сотен функций при обработке селектора. – Blixt
Спасибо за помощь, ребята! – 2009-08-10 02:20:58