作者DarkKiller (System hacked)
看板Ajax
標題Re: [問題] jQuery each --> Native Loop
時間Mon Aug 6 00:13:44 2012
※ 引述《DRLai (蘇打)》之銘言:
: <script>
: $(document).ready(function(){
: $("#test").children("div").each(function(){
: $("#debug").append("I got "+$(this).attr("id")+"<br/>");
: });
: });
如果 #test 下面很多 div,要快的話就是先累積再一次插入:
$(function(){
var t = '';
$('#test > div').each(function(){
t += 'I got ' + $(this).attr('id') + '<br/>';
});
$('#debug').append(t);
});
這樣可以節省 browser redraw 時間。
另外還有 string concat 的問題 (不知道現在新的 browser 還需不需要在意這個),
可以用 array + join 處理:
$(function(){
var t = [];
$('#test > div').each(function(){
t.push('I got ' + $(this).attr('id') + '<br/>');
});
$('#debug').append(t.join(''));
});
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.135.97
※ 編輯: DarkKiller 來自: 210.242.135.97 (08/06 00:14)
→ TonyQ:@DK 最近幾次的測試報告看起來 concat 的問題好很多了 08/06 08:22
→ TonyQ: 甚至還有直接加起來比 array join 還快的案例, 08/06 08:22
→ TonyQ: 真不知道底層怎麼做的。XD 08/06 08:23
→ TonyQ: stackoverflow 上有相關討論 08/06 08:23
→ Crow22312:concat 比較快應該有一陣子了, 只是商業上多半會想支援 08/06 09:05
→ Crow22312:IE6, 它又最慢, 所以會用 (IE6 中較快的) array join 08/06 09:06
→ Crow22312:逐漸擺脫 IE6 陰影以後用 concat 的確會是比較好的選擇 08/06 09:07
→ TonyQ:卡就卡在,很難說是 test-case 的問題(有可能跑到最佳情況 08/06 15:27
→ TonyQ:還是常態來講都是這樣,這年頭 browser optimize 到很難作 08/06 15:27
→ TonyQ:perf benchmark。 08/06 15:28
推 senser:loop的時間不會差太多 差是在append的方法 08/07 12:09