All About Performance

and other stuff by Taras Glek

Snappy #53: Faster: Startup, Image Decoding, Touchpad Input. Smoother Animations


Joe Drew taught Firefox to decode images on multiple threads. It took a mere 29 patches in bug 716140. This should speed up page-load and improve tab-switch times. This task was considered too hard a year ago when Snappy people were discussing potential improvements.

Masayuki Nakano improved Firefox scrolling responsiveness on modern touchpads in bug 829952. Dealing with scroll-events on Windows is a mess. It’s nice when we make forward progress in this area.

Marco Bonardo fixed a mysterious cause of main thread IO I ran into in bug 830423. I ran into this issue because I compulsively navigate to about:telemetry in Firefox and look in ‘Slow SQL Statements’ and ‘Browser Hang’ sections. I encourage readers of this blog to check out that data whenever Firefox is under-performing.


bug 810151 + bug 810454 - Aaron Klotz implemented omnijar + cookie readahead.

bug 648407 - Mike Hommey folded libraries for faster startup. If I’m reading bug 852068 correctly, Firefox now loads 7 fewer libraries on startup. My rough rule of thumb is that each (small) file adds ~30ms to spinning-disk startup so this should net >200ms in startup savings.

Cumulative startup improvements are notoriously difficult to predict + measure, but I suspect that above changes should make for a >=10% speedup in Firefox 22 start over previous releases. We’ll be watching telemetry data in the coming weeks.


bug 590422 - Avi Halachmi is continuing on his quest to make Firefox animate smoothly. This is another tricky step towards smoother animations in Firefox. Since landing this, Avi already embarked on the next gecko-level animation smoothness improvement.

Marco Bonardo spotted some potential for contention in recent DOM Local Storage optimizations. Vladan Djeric landed corrections in bug 842852.

Throughput improvements

Ehsan Akhgari reduced allocator contention in bug 733277.

Tim Taubert taught Firefox to warm up newtab connections on hover bug 790882