Я только что наткнулся на этот пост, удивляясь тому же вопросу ... поэтому решил запустить быстрый тестовый сценарий ... запусти его, попробуй сам, взорвал мой разум!
var now = Date.now();
var diff = 0;
console.log(now);
for(var i=0; i < 1000000; i++)
{
if($(document.getElementById("test")).css('opacity') == '0.2')
$(document.getElementById("test")).css('opacity', '1');
else
$(document.getElementById("test")).css('opacity', '0.2');
}
diff = Date.now() - now;
console.log('With $(document.getElementById("test")).somejQueryCall(): ' + diff + ' milliseconds');
////////////////////////////////////////////////////////////////////////
var now2 = Date.now();
var diff2 = 0;
console.log(now2);
for(i=0; i < 1000000; i++)
{
if($("#test").css('opacity') == '0.2')
$("#test").css('opacity', '1');
else
$("#test").css('opacity', '0.2');
}
diff2 = Date.now() - now2;
console.log('With $("#test").somejQueryCall(): ' + diff2 + ' milliseconds');
////////////////////////////////////////////////////////////////////////
var now3 = Date.now();
var diff3 = 0;
var elem = $("#test");
console.log(now3);
for(i=0; i < 1000000; i++)
{
if(elem.css('opacity') == '0.2')
$(elem).css('opacity', '1');
else
$(elem).css('opacity', '0.2');
}
diff3 = Date.now() - now3;
console.log('With $(elem).somejQueryCall(): ' + diff3 + ' milliseconds');
После запуска этого скрипта я получил следующие результаты:
Прогон 1
С $(document.getElementById("test")).somejQueryCall()
: 552 миллисекунды
С $("#test").somejQueryCall()
: 881 миллисекунда
С $(elem).somejQueryCall()
: 1317 миллисекунд
Прогон 2
С $(document.getElementById("test")).somejQueryCall()
: 520 миллисекунд
С $("#test").somejQueryCall()
: 855 миллисекунд
С $(elem).somejQueryCall()
: 1289 миллисекунд
Прогон 3
С $(document.getElementById("test")).somejQueryCall()
: 565 миллисекунд
С $("#test").somejQueryCall()
: 936 миллисекунд
С $(elem).somejQueryCall()
: 1445 миллисекунд
Я не могу поверить в разницу !!! Просто пришлось поделиться этим!
Мир!