<div dir="ltr"><div>Hello!</div><div><br></div><div>As we continue our relentless focus on improving Firefox performance, I would like to call your attention to some related improvements in our tools that occurred over the last few months.</div><div><br></div><div>First of all, the performance tools team and the automation team worked together to make <a href="https://perf-html.io">perf.html</a> and <a href="https://treeherder.mozilla.org/">treeherder</a> more integrated. The result is that now perf.html can load zip files from try with Talos profiles and display them, while treeherder now displays links to perf.html in Talos jobs that record a profile. Performance sheriffs have started including links to these profiles in Talos regression reports, but you can also get them on try by running |./mach try fuzzy --talos-profile| (<a href="https://treeherder.mozilla.org/#/jobs?repo=try&revision=83e5926195a64bf83c8173cd042f795b073a6cea&selectedJob=174850360">here</a> is an example).</div><div><br></div><div>We encourage everyone to generate profiles before landing their changes, to make sure Firefox performance doesn't regress. A good strategy is to generate two profiles, one before landing the change and one after. When you then open them side by side, it
will be much easier to see what impact your changes had.<br></div><div><br></div><div>The Gecko Profiler itself has received some notable improvements (apart from the regular speedups and bug fixes):</div><div><ul><li>There is a new Flame Graph* visualization that provides a summary view of which stack frames consumed the most CPU. What you are looking for here is long dark nodes: the length indicates the relative percentage in the profile and the darker colors indicate higher self-time (with a different hue for native vs. JS frames). This is different from the similar Stack Chart view that gives you a time-based view of code execution. Both have their advantages, so combining them can lead to better insights. Summary views can also be very valuable when comparing profiles.<br></li></ul></div><div><ul><li>The profiler now collects network request information that can be seen in the Marker Chart. This visualization is a first rough cut; expect more intuitive views and better filtering there. But you can already use it to see when Firefox is blocked on a network request and how network loads correlate with page rendering.</li></ul></div><div>If you encounter any problems while using the profiler, please file them in <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Gecko%20Profiler">Core::Gecko Profiler</a> (for backend bugs) or open an <a href="https://github.com/devtools-html/perf.html/issues/">issue</a> on GitHub for UI improvements. And if you have any feedback on the treeherder/profiler integration, don't hesitate to drop me a note.<br></div><div><br></div><div>Happy profiling!</div><div><br></div>Panos<div><br></div><div><div><div>*: you can learn more about flame graphs from their inventor Brendan Gregg at <a href="http://www.brendangregg.com/flamegraphs.html">http://www.brendangregg.com/flamegraphs.html</a></div><div><br></div></div></div></div>