From MozillaWiki
Jump to: navigation, search

Performance Review - Thursday, Aug 1, 2013

Active Projects -

A review of all in-process projects.

Incremental Cycle Collection (ICC) - mccr8 (bug 850065)

ETA: Q3...

  • no updates, was mostly working on leo blockers

Keep JS-accessible APIs from blocking the main thread - yoric

ETA: Workers: End Aug, mozthreadStorage: End July

  • Session Restore refactoring (with ttaubert, smcleod): got back on track. We changed strategy and landed some bits. We are now working in parallel on caching data and communication and on making it e10s-friendly / async.
    • ETA Caching collection: Done. Should provide a nice speedup.
    • ETA Converting to Promise.jsm: Done.
    • ETA Caching communications: August.
    • ETA e10s-style: See ttaubert.
  • OS.File refactoring is taking longer than expected, due to a weird (science-fiction?) bug. No ETA.
  • Fully Off Main Thread mozStorage: review process in progress. ETA revised to August.

Profiler Backend for Mobile - jseward


  • CFI/EXIDX unwind speedups: planned via caching of unwind rules (bug 893542). This is clearly important, but is hard to assess how much speedup it will give without implementing it. Late august.
  • Other unwind speedups on ARM/{B2G,Android}, together worth around a factor of 2 at least
    • bug 892774 (speed up MyCodeModules::GetModuleForAddress) -- r+'d
    • bug 894264 ( don't generate frames we aren't going to use) -- r?'d
  • breakpad/faulty.lib interface stability: glandium holds the token on this
    • bug 882608 (Segfault with MOZ_LINKER_ONDEMAND=0) -- FIXED (by glandium)
    • bug 887685 (__dl_get_mappable_length(dlopen("", ...) fails): not yet fixed. Causes memory corruption and potential crashyness in certain profiling configs on Android.


  • b2g wants more resolution in sampling (1000/sec, 50% cpu overhead) in order to better analyze gfx slowness/problems
  • should be able to get good speedups in the next few weeks as listed above

Reducing time to first paint - Phase 1 - vladan

ETA: The project hasn't reached the 10% improvement goal, partly because of regressions and partly because my time hasn't been devoted exclusively to this project. I'm hoping to get closer to the target by the end of August(?)

  • fsync'ing experiment
  • Reducing time spent on initializing D3D & D2D: bug 899783 & bug 890336
  • next: libraries loaded at startup, SafeBrowsing, FHR study

Replace Addon Manager SQLITE with JSON file - irving


  • AddonRepository, XPIProvider shutdown on profile-before-change, DeferredSave and has landed in the Fx25 cycle (bug 853389, bug 874890, bug 853388)
  • XPIProvider ready to land, probably should wait on the beginning of next cycle (bug 853388)

Smooth Tab Animation - avih

ETA: Early August
Status (with jmaher):

  • TART:
    • Happy with it, Being reviewed.
    • Blocked by minor bug 888899.
    • measures tab animations and tells how fast we can animate the tabs under different circumstancees - measuring empty tab, new tab page, and dpi scaling
  • Replace talos tsvg,tscroll with the new X versions (with jmaher).
    • ETA: Early August.
    • Status:
      • Performs well in production.
      • Blocked by minor bug 888899.
  • Windows scroll performance/smoothness - not very good.
    • Status: Compiled an extensive benchmark - bug 894128.
    • Next: GFX guys should analyze the data and file specific bugs.
    • new project for gfx team

Newtab and reflows - ttaubert

Status: Done.

  • improved load of new tab, visible when loading multiple tabs in succession or via disabling the pref
  • Newtab preload is enabled by default. To disable: browser.newtab.preload=false

Network Cache Rewrite - jduell

Status: close to an API-complete implementation. Not clear yet if it will be performant enough to replace existing cache, or if additional work (tuning, adding in-memory cache map) will be needed first.

Note: we got large perf improvements by changing the way we handle incoming events: instead of using XPCOM's "process events in order" we're now using a hand-rolled scheduler that prioritizes cache reads over writes. Significant page load speedup.

devoting some time to b2g project as well, may or may not impact this project

Remove localStorage from browser pages - Marco Bonardo

ETA: end of July - COMPLETE (tracking bug 729777)

  • Failures in Jetpack and Social API have been fixed with help of the respective teams
  • bug 889442 landed, about pages cannot use DOM Storage anymore

Complete asynchronous history API - Marco Bonardo, Asaf Romano

ETA: late September

  • Conversion of GetPlacesInfo consumers requires deeper changes to existing code
  • Writing a new async transactions manager for Places, the API is slightly inspired by the HTML5 UndoManager, experimental patch got positive feedback. (bug 891303)
  • Removing binary annotations to simplify the conversion. Rarely used and often abused API. (bug 895839)
  • Adopting promises in some APIs (livemarks so far) to simplify the conversion. (bug 896193)
  • Experimenting with automatic batches for Places views updates. This largely simplifies tracking changes for improving views performance. Trying to have reviewable patch by EOW. (bug 894331)
  • Marcos has added deprecation for the synchronous charset APIs in history, bug 854925 will remove them after a couple versions
  • RemovePlaces on hold for now, while we move on with the above stuff

Reduce impact of bookmarks backups - Marco Bonardo, Raymond Lee

ETA: late September

  • We are at stage 3, API has been finalized, now working on improvements to the behavior, to reduce duplicate or useless work
  • Raymond is currently working on addition of GUIDs to existing backups, this allows to avoid some work and simplify Sync and PICL code.
  • Stage 4 will take care of sync to async conversion of the backend code, more specifically the creation of backups will happen in background, so we can completely avoid shutdown work.

Reduce Storage connections main-thread operations - Marco Bonardo, David Teller

ETA: complete API by mid August, iterative consumers conversion following

  • Patch for OMT AsyncClose pending for review. Delayed due to difficulties in both closing properly the connection and communicating development errors to consumers.

Asynchronous Places Annotations - Marco Romano, Asaf Romano

ETA: component estimated late October, consumers conversion TBD

  • on hold, until we have better understanding of the time needed to complete async history API, likely to restart at late September/Early October.

Improve Text Performance- jet


  • We added adjustable text caching pref as part of bug 834609 and profiling text-heavy pages. More data coming...
  • We've started collecting metrics for text shaping (to measure correctness) and will add timing measurements in the future. These tests generate millions of words and a terabyte of data with each run so it's not something we'll do every night, but will do every time we update our text shaping engine:

Downloads API rewrite - paolo

ETA: First half of August (adjusted)

  • Consumer interface and documentation complete
  • New preference to switch the Downloads Panel back-end (Firefox 25)
  • Will publish a detailed post for add-on developers
  • Major remaining feature work all assigned (Firefox 26)

Project Proposals / Areas that need work

Want to frame the projects

  • release driven?
  • perf area driven? i.e. startup and shutdown, tab strip, general responsiveness, content loading