From MozillaWiki
Jump to: navigation, search

Performance Program Review - June 2013

Active Projects

Project Status ETA (weeks)
Incremental Cycle Collection (ICC)
  • I started landing various cycle collector refactorings
  • Used ASAN to fix a crash involving a set of weakly-held DOM nodes
  • Fixed issue with not cutting off ICC enough in Mochitests, causing Windows oranges
  • Investigating how to deal with weak references keeping things alive
Preffed off by end of June
Keep JS-accessible APIs from blocking the main thread
  • component: Downloads API
  • Constant-stack promise (bug 810490) - Landed.
  • Modules for workers (bug 872421) - Blocked by lack of review [from irakli].
  • Non-blocking session restore (bug 838577) - Blocked by lack of review [from ttaubert].
  • Async mozStorage (bug 702559) - Review in progress [from mak].
    • ETA: Hopefully end of June
  • Making mochitests play nice with Task.jsm (bug 872229) - Pending review [from Yoric].
    • ETA: Hopefully end of June
  • Support for readahead in OS.File (bug 865389) - Unix version making good progress.
    • ETA: Hopefully end of June
  • Remove postMessage jank (bug 879083, bug 852187, bug 873293) - Design in progress.
  • Investigate crashes when Workers are initialized during shutdown - Looks like this will need some changes to either xpcom or necko.
Downloads API news
Downloads API next
  • Communicating more widely
    • firefox-dev,,, Add-ons blog
  • Major milestones
  1. Consumer interface complete
  2. Feature complete and stabilized
  3. Enabled in Firefox Desktop
    • July / Early August
    • Firefox 25 or Firefox 26
  4. Enabled everywhere, nsIDownloadManager decommissioned
Hopefully end of June
Profiler Backend for Mobile
  • Read and use ARM EXIDX unwind information (bug 863475) -- finally through review, needs landing
  • All other prereqs for native unwind on Android are already in place
  • Profiler backend segfaults due to possible data races; investigating (no bug # yet)
  • Starting to collect data on unwind memory use/speed for B2G
Reducing time to first paint - Phase 1
  • bug 873640: Read-ahead was not actually happening on omni.ja's
  • bug 879957: Don't load feclient.dll on startup
  • Profiling & analysis of Firefox & other browsers' startups
  • Found issues:
    • meta bug 880296: Reduce number of DLLs loaded during startup
    • bug 880300: Don't stat plugin libs on the main thread during startup
    • bug 880307: search.json still read on main thread during startup
End of June
Replace Addon Manager SQLITE with JSON file
  • AddonRepository changes have mostly passed review, expect patches to start landing soon.
  • XPIProvider core changes starting to get review comments.
  • Initial implementation of asynchronous save of the JSON data files is implemented and gathering feedback.
  • Still expect a couple of weeks of cleanup on open issues.
Late June
Smooth Tab Animation
  • Landed vsync support on windows (bug 856427) - works well.
  • Regressions from timer filter removal (bug 590422) - reviewed all "inhouse" talos suites (tscroll, tsvg, dhtml). All suites didn't actually measure performance due to wrong approach to timing. Landed partial tscroll improvement, working on full fix for all, with followups (e.g. bug 880036).
  • Tab animation regression tests - in progress. Talos will need some modifications to acomodate it. Working with jmaher.
Newtab and reflows - ttaubert

ETA: Should be mostly complete in the next week except for requestAnimationFrame/setTimeout issues

  • Enabled preloading about:newtab by default (bug 791670)
  • Deferred preloading of next newtab page (bug 875509)
  • Eliminated reflow after swapping docShells by correctly sizing the preloading browser (bug 875257)
  • Got rid of a couple of layout flushes in gBrowser.addTab() (bug 876374)
  • Implemented reflow observers (bug 453650)
  • Removed browser.stop() call in addTab() by adding support for 'nodefaultsrc' attribute (bug 878747)
  • setTimeout() instead of requestAnimationFrame()
NewTab Perf numbers
  • about:blank -> 12 frames avg / 8.5ms paint / 17.6 interval
  • about:newtab -> 11 frames avg / 10.4 paint / 16.4 interval (setTimeout, not rAF)
  • about:newtab before recent changes: 3 frames for the entire animation (practically a slideshow)
  • Australis work planned for Firefox 25, may need to coordinate with front-end team
  • Tim to schedule discussion about requestAnimationFrame/setTime issues for work week
Hopefully end of June
Network Cache Rewrite

Still early in coding. Filesystem layer and new API for consumers being written separately, aren't integrated yet. Branch set up (gum) but not many patches landed yet.


Project Proposals

Yoric's team
  • Testsuite support for worker tests (blocked by bug 872421)
  • Expose current initialization status to components (blocks correct fix to bug 845190)
    • Note: Need to discuss this with bsmedberg
  • mozStorage off main thread closing (bug 874814, blocked by bug 702559)
  • Session Restore aggressive caching (bug 867143, blocked by bug 838577)
  • lz4 bindings for workers (blocked by bug 848223)
  • exit(0) - needs an owner
  • Flash plugin-container profiling - needs more work, benwa and bsmedberg have done some
  • add-on performance impact (e.g. startup & shutdown delays)