Hi Michael, Ouch. That's quite a difference. I thought about the join vs concatenate performance difference in IE, but didn't remember it could be that large. I take that one, I was being displiscent.
cheers, - ricardo On Feb 6, 1:25 am, "Michael Geary" <m...@mg.to> wrote: > "...there is not much room for improvement left." > > You just know that when you say that, someone will come along with a 20x-40x > improvement. ;-) > > http://mg.to/test/loop1.html > > http://mg.to/test/loop2.html > > Try them in IE, where the performance is the worst and matters the most. > > On my test machine, the first one runs about 6.3 seconds and the second one > about 0.13 seconds. > > -Mike > > > From: Ricardo Tomasi > > > Concatenating into a string is already much faster than > > appending in each loop, there is not much room for > > improvement left. What you can do improve user experience > > though is split that into a recursive function over a > > setTimeout, so that the browser doesn't freeze and you can > > display a nice loading animation. > > > On Feb 5, 5:03 pm, James <james.gp....@gmail.com> wrote: > > > I need tips on optimizing a large DOM insert to lessen the > > "freeze" on > > > the browser. > > > > Scenario: > > > I receive a large amount of JSON 'data' through AJAX from a > > database > > > (sorted the way I want viewed), and loop through them to > > add to a JS > > > string, and insert that chunk of string into a tbody of a > > table. Then, > > > I run a plug-in that formats the table (with pagination, etc.). > > > Simplified sample code: > > > > var html = ''; > > > $.each(data, function(i, row) { > > > html += '<tr><td>data from json</td></tr>';}); > > > > $("tbody").append(html); > > > $("table").formatTable(); > > > > formatTable() requires that the table has to be "completed" > > before it > > > can be executed. > > > Is there any way I can optimize this better? I think I've read > > > somewhere that making a string too long is not good, but I've also > > > read that updating the DOM on each iteration is even worst. > > > > Any advice would be appreciated!