"Firefox Startup Performance Weekly Summary"

Current numbers are available on the Performance Snapshot page for all tests.

Summary current startup performance, relative to Firefox 3.5:

  • Warm startup: For Mac, 34% better on 3.6 and 32% better on 3.7. Flat on Windows for 3.6, and since Windows 3.6 was ~5% improved over 3.5 last post, so there appears to be a regression here. However, the graph data is not showing a 5% regression, so something might be incorrect in the snapshot code.
  • Cold startup: For Mac, I'm discarding past numbers since we were not measuring it correctly (bug 532965). For Windows, still not measuring yet. For Linux, the ~9% regression discrepancy from the last post is now gone, putting 3.6 at 3% improved over 3.5 and trunk at a 3% regression. However, there are regular multi-run spikes in the graph, so I'm not sure we're getting the best data out of this measurement scheme either. This week's activity:

  • Rob Strong landed bug 532552, which removes the blocklist service from the startup path. This log of WinCE startup, generated from Taras' patch here, made it apparent that the service was in the startup path and taking a significant amount of time. Poke around that log, there's more goods to be had.

  • Taras landed a bunch of JAR related bugs on branch: bug 510844, bug 511754, bug 525755, bug 523065, bug 521227.
  • Rob Strong put up a detailed post about his startup improvements to the update service, the effect on mobile, and pointed out some other front-end services that could benefit from the same treatment.
  • Joel's static Firefox is working (bug 525013), and is showing ~10% improvement in startup time on Mac. He's moved on to improving code locality (bug 531406). However, time-ordering of symbols doesn't seem to improve the sequentiality of the page-ins by much, so maybe more improvements there. More data on the bug.
  • Ben is making progress on the fastload replacement in bug 520309.
  • No updates on Windows cold-startup testing for Talos on bug 522807. I need to test on Vista, and turn off Pre/Superfetch.
  • Taras has a new patch up for service caching (bug 516085).
  • Rebasing on Windows in bug 484799 messed up mobile builds, was backed out.
  • Jonathan Kew's patch on bug 519445 for further reductions in Mac startup time spent in font system initialization, is ready to land when the tree re-opens. Projects in a holding pattern:

  • Super-fast-path-ing of Components.* (bug 512584) is on hold, blocking on getting help from JS team or someone else who knows that code.

  • Ryan Flint has a WIP patch to minify JS on bug 524858 that significantly reduces the size of shipped JavaScript files.
  • 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. Need to list scenarios, 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.
  • No updates on Zack's CSS parser changes in bug 513149. As usual, more details and links are available on the project wiki, and we're available to answer questions in #startup on irc.mozilla.org.