Wanted: An extension for profiling Firefox

Firefox needs an extension that can produce very high-level performance profiling numbers with only casual effort.

We often get bug reports that say “Firefox is painfully slow on site X”. It takes rather a lot of effort just to direct this kind of bug to the right person, because it’s usually not immediately clear why the site is so slow. It would be awfully nice to be able to load a page and see not only how much time Firefox spends waiting for the network (something Firebug can already do) but also how much time we spend doing style resolution, reflow, frame construction, garbage collection, compiling JavaScript, running JavaScript, and so on. Even Boris Zbarsky, who’s probably as comfortable using a profiler as anyone I work with, says such an extension would save him time.

On Mac, you could get this information using dtrace. If you’re a programmer, you have a Mac, and you’re interested in a fun side project, please get in touch with Boris or me.

6 Responses to Wanted: An extension for profiling Firefox

  1. On Firebug we’ve been discussing changing the ‘net’ panel in to a ‘timeline’ panel. A separate panel with the same technology has also been on my mind, based on a project called “FireCrystal” which snaps diffs of the DOM and plays them back as you mouse across the bar.

    Adapting the Profiler in Firebug to do this would also be possible. The profiler bins results, so it’s not the same kind of analysis. More complex pages would benefit from this approach.

    We don’t use the Net panel much in Chromebug, but I recently needed its side effects so I think getting up would not be hard. (Allowing xul and whole-app analysis).

    Of course I don’t agree with using dtrace or Mac for this. The whole community would benefit from such a tool and it only needs a few coarse grained events from the platform. Well, depending on how much hides in “and so on” of course.

  2. I’m wondering if you didn’t mention https://addons.mozilla.org/en-US/firefox/addon/9954 because you don’t know about it, or it’s nothing like what you’re describing?

  3. Not what I’m interested in. The events I’m interested in are basically C++ function calls, not JS.

  4. I’m working on a networking profiling extension for a client, and I was already wondering how hard it would be to add something like nsIHttpActivityObserver for rendering events. Of course, callbacks could be added for other stuff (e.g. JS GC) as well. This would make it straightforward to write the profiling extension you describe, and I’m sure it would have any effect on performance if the callbacks are only used when a listener is registered (or maybe even activated by a pref).

  5. Sir,
    I ‘m currently a software engineer at Siemens R & D Pune. I understand Java and C++ . I ‘m interested in contributing to this.

    Venkata Vineel

Leave a Reply

Your email address will not be published. Required fields are marked *