"Firefox Startup Performance Weekly Summary"

Work on blockers for 3.6 stole some time last week, but some startup work advanced nonetheless, including a bunch of landings. I've posted the numbers from early last week below. The percentages are the difference from 3.5. Given the spate of landings later in the week after we measured, I'll have to update the numbers again to get the full effect of everything listed below. 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.

Cold Startup (median results from Juan and myself)

Platform 3.5 3.6 Trunk
Mac Leopard (10/6) 12161 10440 (-14%) 10175 (-16%)
Win XP (10/4) 5610 5640 (0%) 4050 (-27.8%)
Warm Startup (median of results from Talos, updated 10/6)

Platform 3.5 3.6 Trunk
Mac Leopard 1500ms 1190ms (-20%) 1040ms (-30%)
Win XP 458ms 470ms (+2%) 468ms (+2%)
Win Vista 545ms 544ms (0%) 545ms (0%)
Linux 624ms 634ms (0%) 634ms (0%)
Recent landings:

  • Ryan landed bug 475289 to lazily initialize the engineMetadataService, bug 520342 to consolidate service initialization in the microsummary service, and pushed bug 499123, coalescing browser about: pages, to the 3.6 branch.
  • Taras landed a bunch of optimizations to the fastload system as well as his work on combining the different preference files.
  • I turned on PGO for Places, mozStorage and SQLite.
  • Alfred Kayser's patch on bug 510844 landed, which should increase throughput of JAR file reading.
  • Ben Hsieh got review on bug 510991, which removes some stats() from the startup path. Recent activity:

  • Ryan put up a patch for bug 520284, which utilizes an important change that happened recently in bug 471219 which allows components to register for periodic timer notifications without instantiating the service or component. An example is in Ryan's patch, and the docs are in the source.

  • Bug 504858 pushes back the population of the bookmarks toolbar until after the browser window comes up. Dao put up a new patch. Measuring the wall-clock effect of this on startup, and determining what exactly is "gaming" the Ts test is part of the work here.
  • Ben Hsieh is in review cycles for bug 511761 which optimizes the fastload cache invalidation, and consolidates some of the invalidation triggers.
  • Service caching work in bug 516085, still made no progress. This week I'll try pushing this to the Places branch.
  • No updates on Zack's CSS parser changes in bug 513149.
  • Cold Startup Testing: Alice put more patches on bug 510587, getting us ever closer to automated testing of cold startup. Projects in a holding pattern:

  • Moving font-loading out of the startup path on Mac: Jonathan Kew filed bug 519445 with a WIP patch for yet further reductions in Mac startup time spent in font system initialization.

  • 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.