作者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)
1F:→ TonyQ:@DK 最近几次的测试报告看起来 concat 的问题好很多了 08/06 08:22
2F:→ TonyQ: 甚至还有直接加起来比 array join 还快的案例, 08/06 08:22
3F:→ TonyQ: 真不知道底层怎麽做的。XD 08/06 08:23
4F:→ TonyQ: stackoverflow 上有相关讨论 08/06 08:23
6F:→ Crow22312:concat 比较快应该有一阵子了, 只是商业上多半会想支援 08/06 09:05
7F:→ Crow22312:IE6, 它又最慢, 所以会用 (IE6 中较快的) array join 08/06 09:06
8F:→ Crow22312:逐渐摆脱 IE6 阴影以後用 concat 的确会是比较好的选择 08/06 09:07
9F:→ TonyQ:卡就卡在,很难说是 test-case 的问题(有可能跑到最佳情况 08/06 15:27
10F:→ TonyQ:还是常态来讲都是这样,这年头 browser optimize 到很难作 08/06 15:27
11F:→ TonyQ:perf benchmark。 08/06 15:28
12F:推 senser:loop的时间不会差太多 差是在append的方法 08/07 12:09