<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 04/21/2017 03:12 AM, Nicholas Nethercote wrote:<br>
    <blockquote
cite="mid:CAEXw-AANG78ZkMC3GXG_mjdcNv-pvVAPyXa5pv3cV6OeQcN2pA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Judging from the incoming flow of bug reports, the number
          of people using the Gecko Profiler has increased in the last
          week or two. I take this as a good sign that it's being used
          increasingly heavily for Quantum Flow work, which is good.<br>
        </div>
      </div>
    </blockquote>
    Yes, indeed.  I should also say that this is definitely due to the
    hard work of everyone working on improving it both the backend side
    and on the UI side (including you!)  It's safe to say that this push
    on performance could not have happened without the Gecko Profiler,
    so thanks to everyone who keeps making it better.<br>
    <br>
    <blockquote
cite="mid:CAEXw-AANG78ZkMC3GXG_mjdcNv-pvVAPyXa5pv3cV6OeQcN2pA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Nick<br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Fri, Apr 21, 2017 at 4:25 PM, Ehsan
          Akhgari <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:ehsan.akhgari@gmail.com" target="_blank">ehsan.akhgari@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">
              <div>Hi everyone,</div>
              <div><br>
              </div>
              <div>I would like to share some updates about some of the
                ongoing performance related work.<br>
              </div>
              <div><br>
              </div>
              <div>We have started looking at the native stack traces
                that are submitted through telemetry from the Background
                Hang Reports that take more than 8 seconds.  (We were
                hoping to have been able to <a moz-do-not-send="true"
                  href="https://bugzilla.mozilla.org/show_bug.cgi?id=1346415"
                  target="_blank">reduce this threshold to 256ms</a> for
                a while now, but the road has been bumpy -- but this
                should land really soon now!)  Michael Layzell put
                together a telemetry analysis job that creates a
                symbolicated version of this data here: <a
                  moz-do-not-send="true"
                  href="https://people-mozilla.org/%7Emlayzell/bhr/"
                  target="_blank">https://people-mozilla.org/~<wbr>mlayzell/bhr/</a>. 
                For example, <a moz-do-not-send="true"
                  href="https://people-mozilla.org/%7Emlayzell/bhr/20170405.html"
                  target="_blank">this</a> is the latest generated
                report.  The grouping of this data is unfortunate, since
                the data is collected based on the profiler pseudo-stack
                labels, which is captured after 128ms, and then native
                stack (if the hang continues for 8 seconds) gets
                captured after that, so the pseudo-stack and the native
                stack may or may not correspond, and this grouping also
                doesn't help going through the list of native stacks and
                triage them more effectively.  Work is under way to <a
                  moz-do-not-send="true"
                  href="https://bugzilla.mozilla.org/show_bug.cgi?id=1344003"
                  target="_blank">create a nice dashboard</a> out of
                this data, but in the mean time this is an area where we
                could really use all of the help that we can get.  If
                you have some time, it would be really nice if you can
                take a look at this data and see if you can make sense
                of some of these call stacks and find some useful bug
                reports out of them.  If you do end up filing bugs,
                these are super important bugs to work on, so please
                make sure you add "[qf]" to the status whiteboard so
                that we can track the bug.</div>
              <div><br>
              </div>
              <div>Another item worthy of highlight is Mike Conley's <a
                  moz-do-not-send="true"
                  href="https://mikeconley.github.io/ohnoreflow/"
                  target="_blank">Oh No! Reflow! add-on</a>.  Don't let
                the simple web page behind this link deceive you, this
                add-on is really awesome!  It generates a beep every
                time that a long running reflow happens in the browser
                UI (which, of course, you get to turn off when you don't
                need to hunt for bugs!), and it logs the sync reflows
                that happened alongside the JS call stack to the code
                that triggered them, and it also gives you a single link
                that allows you to quickly file a bug with all of the
                right info in it, pre-filled!  In fact you can see the <a
                  moz-do-not-send="true"
href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3A%22%5Bohnoreflow%5D%22&list_id=13547427"
                  target="_blank">list of already filed bugs</a> through
                this add-on!</div>
              <div><br>
              </div>
              <div>Another issue that I want to bring up is the [qf:p1]
                bugs.  As you have noticed, there are a lot of them. 
                :-)  It is possible that some of these bugs aren't
                important to work on, for example because they only
                affect edge case conditions that affects a super small
                subset of users and that wasn't obvious when the bug was
                triaged.  In some other cases it may turn out that
                fixing the bug requires massive amounts of work that is
                unreasonable to do in the amount of time we have, or
                that the right people for it are doing more important
                work and can't be interrupted, and so on.  Whatever the
                issue is, whether the bug was mis-triaged, or can't be
                fixed, please make sure to raise it on the bug!  In
                general the earlier these issues are uncovered the
                better it is, because everyone can focus their time on
                more important work.  I wanted to make sure that this
                wasn't lost in all of the rush around our communication
                for Quantum Flow, my apologies if this hasn't been clear
                before.</div>
              <div><br>
              </div>
              <br>
              <div>On to the acknowledgement section, I hope I'm not
                forgetting to mention anyone's name here!</div>
              <div><br>
              </div>
              <div>
                <ul>
                  <li>Bas Schouten made it so that we <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1352442"
                      target="_blank">don't clear the compositor
                      background immediately before drawing into it</a>. 
                    This made some painting and scrolling related
                    benchmarks <a moz-do-not-send="true"
                      href="https://treeherder.mozilla.org/perf.html#/alerts?id=5801"
                      target="_blank">faster</a>, and fixed a <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1330814"
                      target="_blank">flickering issue</a> in the mean
                    time!</li>
                  <li>Mason Chang made the <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1351733"
                      target="_blank">Youtube settings widget less janky</a>
                    on Windows with D2D when the video is fullscreen.</li>
                  <li>David Baron made the flushes caused by the code
                    that watches your mouse to know which side of the
                    window to put the status bar when you hover a link <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1307134"
                      target="_blank">less severe</a>.</li>
                  <li>Neil Deakin <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1334635"
                      target="_blank">removed a synchronous layout flush</a>
                    that used to happen when closing a window which
                    would slow down the window going away.</li>
                  <li>Dão Gottwald <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1345315"
                      target="_blank">removed some obsolete tab
                      animation telemetry</a> which could slow down tab
                    animations (yes!).  Dão also <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1356655"
                      target="_blank">removed a synchronous layout flush</a>
                    which could slow down detaching a tab into a new
                    window and he also lazified some code to <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1356663"
                      target="_blank">avoid some more layout flushes</a>
                    which were related to the status panel.</li>
                  <li>Markus Stange made <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=830990"
                      target="_blank">the Gecko Profiler not kill your
                      battery after you stop profiling</a>, and also
                    made it so that <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1346592"
                      target="_blank">once you start profiling a thread,
                      you can actually stop profiling it</a>.</li>
                  <li>Michael Layzell <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1352684"
                      target="_blank">excluded some common file JS file
                      extensions</a> from the expensive computation that
                    we run on Windows to determine the mimetype of a
                    file from its extension.</li>
                  <li>Kris Maglione made it possible to <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1314861"
                      target="_blank">load add-on SDK modules lazily</a>. 
                    He also made <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1317697"
                      target="_blank">loading ExtensionContent.jsm lazy</a>. 
                    These two changes together (but probably mostly the
                    former) showed <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1314861#c52"
                      target="_blank">great improvements on Talos</a>. 
                    This is even true for users without any add-ons
                    using the add-on SDK since these modules are also
                    used in our internal code.</li>
                  <li>Robert Helmer <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1356676"
                      target="_blank">created a Go Faster add-on</a> to
                    quickly deploy the fix of <a moz-do-not-send="true"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=1353216"
                      target="_blank">bug 1353216</a> to Firefox 52
                    users even before they upgrade to Firefox 53 which
                    includes the fix!</li>
                  <li>Edouard Oger made <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1350613"
                      target="_blank">Firefox Sync UI code cache the
                      DateTimeFormat objects</a> where possible.</li>
                  <li>Alastor Wu made some Fennec media controls code
                    that could be expensive <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1348803"
                      target="_blank">not run on Firefox desktop</a>.</li>
                  <li>Makoto Kato <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1352882"
                      target="_blank">added a cache for document encoder
                      objects used by TextEditor</a>, in order to
                    improve the performance of setting the value of
                    HTMLInputElement.value.</li>
                  <li>Tom Schuster <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1344469"
                      target="_blank">optimized Object.hasOwnProperty()</a>. 
                    This is a commonly used JavaScript built-in on real
                    web pages, really nice optimization to have!</li>
                  <li>Florian Quèze <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1353563"
                      target="_blank">removed a synchronous layout flush</a>
                    that used to happen when displaying each item in the
                    awesome bar.  He improved the awesomebar even more
                    by <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1312999"
                      target="_blank">caching the one-off search buttons
                      instead of regenerating them every time we open
                      the popup</a>.  Furthermore, he ensured that <a
                      moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1349742"
                      target="_blank">we don't pay the cost of
                      initializing UITour.jsm for pages that do not
                      display a UI tour</a>.</li>
                  <li>Wei-Cheng Pan <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1344893"
                      target="_blank">added telemetry probes for
                      navigation timings and time to first byte measures</a>.</li>
                  <li>Shu-yu Guo <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1348134"
                      target="_blank">improved the timing of script
                      source compression by delaying it until GC</a>. 
                    Previously we used to do this when parsing
                    JavaScript (on a separate thread) which is wasteful
                    because it would mean that we'd have to decompress
                    the compressed source during page load sometimes,
                    and also burning needless CPU cycles during JS
                    parsing isn't wise.</li>
                  <li>J. Ryan Stinnett <a moz-do-not-send="true"
                      href="https://bugzilla.mozilla.org/show_bug.cgi?id=1346854"
                      target="_blank">made the Developer Toolbar not
                      create a network listener for every single tab
                      that you have open</a>.  Besides perf wins, this
                    means fewer OOM crashes too!</li>
                </ul>
                <div>Thanks for reading!  Until next time, happy
                  hacking!<span class="HOEnZb"><font color="#888888"><br>
                    </font></span></div>
              </div>
              <span class="HOEnZb"><font color="#888888">
                  <div><br>
                    -- <br>
                    <div class="m_8320608157022559052gmail_signature">
                      <div dir="ltr">Ehsan<br>
                      </div>
                    </div>
                  </div>
                </font></span></div>
            <br>
            ______________________________<wbr>_________________<br>
            firefox-dev mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:firefox-dev@mozilla.org">firefox-dev@mozilla.org</a><br>
            <a moz-do-not-send="true"
              href="https://mail.mozilla.org/listinfo/firefox-dev"
              rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/firefox-dev</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>