2010-10-31 101 views
2

哪些代碼最快?Jquery的代碼問題

for(i=0; i<100; i++) { 
    jQuery("#myDiv").append("<span>" + i + "</span>"); 
} 
// 

var i, markup = ""; 
for (i=0; i<100; i++) { 
    markup += "<span>" + i + "</span>"; 
} 
// 

jQuery("#myDiv").append(markup); 

// 
var i, markup = ""; 
for (i=0; i<100; i++) { 
    markup += "<span>" + i + "</span>"; 
} 

// 
jQuery("#myDiv").append("<div>" + markup + "</div>"); 

// 
+0

要區分不同的情況有點困難。 – 2010-10-31 05:57:13

回答

0

這很難說,但這裏有一個更好的,更好地工作在更大的字符串:

var markup = []; 
for(int i=0;i<100;i++){ 
    markup.push('<span>' + i + '</span>'); 
} 
jQuery('#myDiv').append(markup); 
2

我猜這一個:

jQuery("#myDiv").append(markup); 

我猜有幾乎與此不同:

jQuery("#myDiv").append("<div>" + markup + "</div>"); 

原因是,我認爲第一種情況最慢,是你創建jQuery對象100次而不是一次。

當然,最好是對性能問題進行配置或其他測試。查看John Resig的Deep Profiling jQuery apps的帖子。

+0

偉大的迴應。謝謝。將測試。 – Ben 2010-10-31 06:33:12

+0

除非你錯了。不要只是猜測,總是測試。它甚至押韻,大聲笑:) – galambalazs 2010-10-31 10:56:46

+0

我完全同意你應該測試。這就是爲什麼我寫我猜測。 :) – 2010-11-01 17:30:01

4

這很容易test

  1. 第三個是最快的,因爲jQuery將有一個包裝元素,只有這需要連接到父級,它完成。它的比其他兩個快3-5倍

  2. 第一個將是第二個,因爲jQuery直接附加每個元素而沒有處理大字符串的開銷。

  3. 第二個將是最慢的,因爲巨大的字符串被創建後,就沒有根元素,所以<span>旨意添加一個接一個父。

注意:最後兩個的實際順序可能因不同的瀏覽器而異。它們有些相同。