2013-10-15 58 views
0

這是一個效率問題。我用我的Chrome以某種方式測試過,但我不知道其他瀏覽器。

有一些變量影響的結果,例如:

  • 迭代次數做

  • 變量的尺寸:$(」。elems的)是不與$('#elem')相同。

  • DOM結構

測試我所做的是在這裏:search by idsearch by class

for (j=0;j<med;j++){ 

    start = new Date().getTime(); 
    pippo = $(target); 
    for (var n = 0; n < maxCount; n++) { 
     pippo.css({height:'45px'}); 
    } 
    elapsed = new Date().getTime() - start; 
    result1 += elapsed; 


    start = new Date().getTime(); 
    for (var n = 0; n < maxCount; n++) { 
     $(target).css({height:'45px'}); 
    } 
    elapsed = new Date().getTime() - start; 
    result2 += elapsed; 
} 

結果似乎是說,存儲變量優於做好每Tyme的搜索。

您的意見是?

對於我的瀏覽器,我在存儲變量時速度提高了20-30%。

回答

1

鑑於示例中的元素是由id選擇的,它在頁面中應該是唯一的。因此你應該總是在循環之前緩存它。

var $pippo = $('#pippo'); 

for (j = 0; j < med; j++) {  
    start = new Date().getTime(); 
    for (var n = 0; n < maxCount; n++) { 
     $pippo.css({ height: '45px' }); 
    } 
    elapsed = new Date().getTime() - start; 
    result1 += elapsed; 
} 

如果選擇是class那麼你就需要在循環中定義的選擇,或更好的使用each()因爲它遍歷一個單一的選擇。

+0

該示例帶有一個id,但您可以將目標更改爲「.null」,而不是'#pippo',以查看其他結果:[按類搜索](http://jsfiddle.net/nery89/qwYuq/3 /),[按ID搜索](http://jsfiddle.net/nery89/qwYuq/2/) –

+0

沒問題,我在使用類選擇器的答案結尾處注意到了。 –

+0

無論如何,謝謝你! –

相關問題