Firefox Startup Performance – January 22Posted: January 22, 2010
A good week: Firefox 3.6 was released, and I’ve gotten a lot of feedback from friends and colleagues that startup has improved, and that it’s snappier than ever. Yesterday I blogged a roundup of the performance improvements in Firefox 3.6.
Top Startup Bugs
|Estimated win||Bug #||Summary||Owner||Status||Notes|
|>10%||512584||Super fast paths for Components.classes and Components.interfaces||Taras Glek||in progress||Taras is traveling, says he’ll close it out when he returns.|
|>10%||525013||Investigate a more static build configuration of Firefox||Joel Reymont||in progress||More great data from Zack and Joel. See PDF charts of the different build configurations tested on different hard-drive speeds for Mac and for Linux.|
|up to 25%||514083||Per-file HFS+ compression on Mac OSX 10.6||Joel Reymont||in progress||Conclusion is that we need to make this happen via the installer, as well as the updater, since modifying files results in decompression. Need to find an owner for this still.|
|TBD||520309||Startup cache: replacement for fastload cache||Ben Hsieh||in progress||Considering moving back to the simpler caching approach.|
|TBD||503483||Turn on –enable-faststart for Firefox by default||Dietrich||needs testing||Started talking with Rob Strong about making the changes to the NSIS installer to make this happen.|
|TBD||513149||Speed up CSS parsing by using a machine generated lexer||Zack Weinberg||Zack’s blocked on other work||No update.Taras says about 6% of startup spent parsing CSS.|
Other activity this week:
- Of the bugs I filed as a result of the JS profiling data (ranked log, stack view), we closed out bug 539991 and bug 539870, and have owners and patches on bug 539869 and bug 539997.
- I figured out the leak on bug 506471, to move FUEL out of the startup path, and will have review soon.
- Taras posted a comparison of the startup time on Linux with a new profile for Chromium and Minefield. Good data… for Linux users, but the lesson here is that we urgently need a canonical dirty profile to test with. I’m going to get with the Test Pilot folks to see about gathering the data to do this.
- Also, I found another post from Taras that I missed while I was out for the holidays, detailing the problems with measuring cold startup on Windows.
Projects in a holding pattern:
- More investigation into Hunspell changes in bug 468799, possibly incorporating some changes Chrome made.
- JARification: David abandoned moving JS modules into a JAR file, since those files are fastloaded. However, since we want things like post-extension-install restarts to be fast, and those cause fastload cache invalidation, we might want to do things like this anyways. I filed a bug for the same treatment for components. These are lower priority, since they’re not the normal startup case. Follow along with all JAR-ification via the tracker bug.
- Startup Timeline: No updates, still not landed. Add [ft] in the whiteboard of your bug w/ the function names you want timed and David will generate it and update the bug.
- Static Analysis: No progress on bug 506128. David needs to file a bug with the final log of named-yet-uncalled functions.
- Dirty Profile Testing: No progress. We have a list of test scenarios, still need to file bugs for each, generate Talos config patches and profile data, and then move it into Rel-Eng territory. Also, need to get a separate Tinderbox tree, since it’s going to cause a bazillion new columns.
- Joel Reymont noted in bug 513076 that there are serious drawbacks to getting our libraries in the dyld shared cache on Mac, so has deprioritized that work.