Performance
Jump to navigation
Jump to search
Performance
Mozilla's desktop performance team focuses on improvements to the Gecko platform and desktop Firefox. You can find us on the #perf channel of irc.mozilla.org or email perf@mozilla.com
The team:
- Vladan Djeric, :vladan on IRC, blog
- Aaron Klotz :aklotz, blog
- Roberto Vitillo :rvitillo, blog
- Avi Halachmi :avih, blog
- David Teller :Yoric, blog
- David Major :dmajor
Current Projects
- Weekly status reports: Mozilla Status Board
- In Q2, half the team will be working on improving web content performance.
- Our Q1 2015 goals
- Q4 2014 goals
- Q3 2014 goals
- Q2 2014 goals
- Q1 2014 goals
Measuring & improving Firefox performance
Write-ups
- Firefox performance knowledge-base
- How to evaluate the performance of your new feature
- Information on Talos automatic performance tests:
- Avoid SQLite in your next Firefox feature
Tools
- Telemetry:
- Telemetry dashboard
- Adding a new Telemetry probe
- The "More Dashboards" sidebar in the main dash has links to all our dashes
- Cerberus: Automated regression detection for Telemetry
- Set the "alert_mails" field in your histogram declaration to get automatic email notifications of regressions
- You can do custom Telemetry analyses using MapReduce or Spark
- SPS Gecko Profiler
- Buildbot/Talos
- graphs.mozilla.org: for visualizing past Talos test results
- Joel Maher maintains a dashboard of current Talos regressions & improvements
- xperf
Terminology
- Main Thread
- A browser generally runs all its things sequentially on a single thread, which is typically referred to as the main thread. This means that Javascript can change stuff which affects the screen, and Javascript code will not continue before the screen reflects the requested changes, or other changes. This is a big bottleneck since it's hard to run things in parallel.
- v-sync
- Vertical synchronization to the monitor's beam reset. It's used at contexts of animations, where in order to achieve 100% smoothness of animation, each frame should be sent to the display such that it matches the v-sync timing.
- OMTC
- Off main thread composition. When rendering graphics in Firefox, this means that the main thread just prepares the rendering for each frame, but then a heavy chunk of the rendering (composition) happens on a different thread. This allows to have more free time on the main thread, which in turn means it can run more Javascript stuff on each frame. BenWa's blog post explains OMTC in details.
- APZ
- Async Pan Zoom (Controller) - technique which browsers sometimes use to zoom and/or pan (move the page up/down/left/right) on a thread which isn't the main thread, therefore allowing longer Javascript calculations on the main thread without affecting the responsiveness for certain operations (specifically - pan and zoom).
- Project Silk
- Project to unify and improve animation in Firefox by using global v-sync timing. Before silk, the timing was done at the "refresh driver" using timeouts, where on each such iteration it would run everything the browser needs to run for a single frame. With silk, there's an external module which generates events synchronized to v-sync, which hopefully improves animation smoothness. Check this mchang's blog post for an overview of Project Silk and this document for Project Silk architecture.
Archive (Delete soon)
Old progress reports:
- June 2014 Meeting Minutes, Report
- February 2014 Meeting Minutes, Report
- December 2013 Meeting Minutes, Report
- November 2013 Meeting Minutes, Report
- September 2013 Meeting Minutes, Report
- August 2013 Meeting Minutes, Report
- July 2013 Meeting Minutes
- June 2013 Meeting Minutes
- May 2013 Meeting Minutes
Old Projects
- Mobile Startup Shrink
- Startup Performance
- Front-end Performance (i.e., responsiveness)
- Add-on Performance
- Snappy
- Mobile Performance Info
Tools:
- Codesighs - a tool which analyzes code and data size.
- Performance:Tools. For measuring performance. Tip o' the propeller-cap to Daniel Roberts (zuperdee@penguinpowered.com) for the pointers.
- Performance:Probes. Project to integrate a system of performance probes into Gecko.
Old Documentation and Presentations:
- Code Footprint Performance:Footprint_Reduction_Techniques explains common bad patterns and how to correct them.
- Performance:Profiling_JuJu. Things you should know about doing profiling. Tips and tricks for some of the tools, and lots of other Good Things To Know.
- Profiling and leak analysis on the Mac.
- Performance:Footprint_Tools. Presentation on footprint tools
- Performance:Startup slides Presentation on general performance tools
- Performance:Leak_Tools. Presentation on memory leaks detection tools
- Mac Performance Tools Presentation on performance tools that work on Mac