Posted by: felipe | July 2, 2013

Firefox Performance Week

Last week, the Firefox front-end team got together in Toronto to discuss various of our ongoing projects, with a special focus on performance-related goals. The performance team also joined us as there are various joint projects between our teams. After the week is over it’s interesting to look back and see what was accomplished during the week and what it opened as guidance for our future work. Here is my personal recap, some of the highlights of what I did and what I saw during the week. In no particular order:

  • Finally met with Irving, with whom I’ve been working in the past few months in our project to move the Add-ons Manager storage from SQLite to JSON and making it off-main-thread (bug 853389, bug 853388)
  • We did a triage of performance-related bugs to classify them into high impact and low impact and figure out where to focus
  • Got to see some of the great progress that Tim Taubert and Avi has done on the tabstrip animations and got Tim to help me use the reflow observers to do some experiments of my own in the UI. I didn’t find any obvious low hanging fruits, which is expected since he has fixed various offenders since introducing these reflows observers, but the attempt was worthwhile
  • Using the profiler I noticed some long stacks for text reflowing during tab animations, but these didn’t translate into any measurable slowness. In any case, I started some hacking to see if it was possible to improve it anyway. The issue is that the title in a tab has to be constantly remeasured for cropping while a tab opening animation is happening. I wrote a patch to only display the tab title and favicon after the animation has completed, and then got together with Avi to run his tab animation FPS tests and see what changes. The answer was: not much, there were no visible gains. In hindsight, there’s an obvious reason: even though we can hide the text in the tab that is opening, we can’t do it for the other open tabs, which will all be potentially shrinking and re-cropping at the same time. However, the investigation was very useful nonetheless, because we discovered two issues with the APIs used to measure the FPS on Mac: a telemetry measurement have been inactive since OMTC has been activated; and the framerate was always stuck on vsynced even with different values for layout.frame_rate (which is useful to tweak when doing animation stress tests)
  • Got together with Paolo to discuss the plans and current state of the Downloads API off-main-thread project, which I’ll be joining to help (starting with bug 852482)
  • Watched Vladan present his findings about running Firefox on an SD card. I had already seem the video through his blog post but watching it again and going into more details was very interesting, as the extreme slow disk IO is not only an artificial case produced on SD cards, but also something that many users have to face daily on machines with older hard drives and anti-virus software than can significantly worsen the problems.
  • Vladan’s talk was also of particular interest to me as it serves as motivation and validation for the work I’ve been involved with in the last significant number of months: the Add-ons Manager work and now the Downloads API.
  • And various converstations about Electrolysis, including a good talk with Yoric to understand how the ongoing work on session restore and e10s will interact

And beyond that there were also various other topics that benefited from having the team all together in one place, specially Social API and Australis. To me personally the week was immensely helpful as a motivator and as a way to get consensus and clarity into our upcoming projects, not to mention the fine chance of directly interacting with the entire team which not often happens as we’re all spread around the around!

As a side note, this blog post was an exercise in itself as one of the outcomes for me from the Summit Assembly meeeting we had at the week before. There’s more on it that needs a separate blog post to explain, but a personal action that I’ve taken from that event is to increase the transparency and involvement with the community about the work I do.


Categories