I started poking at what was slow about TBPL, and found two relatively straightforward improvements.
Created attachment 463596 [details] [diff] [review] set innerHTML only once This avoids doing += on ul.innerHTML. Doing innerHTML += ... means that we have to run the innerHTML getter, and then run the setter. This saves serialization and reparsing. This drops _writePushesListHTML from about 250ms to 180ms on current mozilla-central on my machine.
Created attachment 463598 [details] [diff] [review] use event handler attributes for machineResult links Most of the time in _buildPushesList, however, is installing (and, for refreshes, uninstalling) the click handlers on the machineResult links. This switches them to use event handler attributes. It's a little out-of-style, but the win is huge. This speeds up _buildPushesList from 425ms to 215ms for the initial load of current mozilla-central, and even more for the reloads (because of the uninstall). After this patch, _writePushesListHTML dominates the performance of _buildPushesList.
Comment on attachment 463596 [details] [diff] [review] set innerHTML only once Stepping on mstange's toes here...
Comment on attachment 463598 [details] [diff] [review] use event handler attributes for machineResult links This looks safe to me, but I'll let Markus take a look at it as well. BTW, have you filed core bug to speed this up?
http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/rev/bff03fb25158 http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/rev/330ad3458ff3 sayrer suggested jQuery bind is slow; I'm not sure what core bug I would file.
And added a whitespace fix since I forgot the bug number: http://hg.mozilla.org/users/mstange_themasta.com/tinderboxpushlog/rev/9ba0f98dd820