preload
Yoono’s Holiday Bailout Party Yoono’s XUL Profiler Available on Mozilla Add-Ons
Dec 11

Non-developers please forgive us; it’s rather seldom but this post contains technical gibberish that may phase some of you.

While developing Yoono, we are unsurprisingly confronted with the usual performance-improvement issues that are the daily chore of most developers.

Although some tools are available to investigate these problems, some of them did not suit our needs because of our technical implementation as an add-on (versus implementation in a web page), while some were incomplete, and others cumbersome or difficulty to make work, and certainly not to be used on an every day basis.

Something we never found was a tool that could graphically show the hot spots of our UI, by which I mean the ones that require heavy work from the browser in terms of refreshing parts of the canvas…

Thanks to Alex at yoono, these dreadful times are now over, and XUL Profiler is born, and available to anyone for use.

First, the execution profile, that details the average and total time consumed in each method, how many time they were called, with a nice graph layout where each method can be deployed according to the stack calls, and a link to display the source file at the given line.

All you need to do is click on the XUL Profiler button, and it will start to record what’s happening. One more click, it will stop and the result will be available:

Callgraph from XUL Profiler, by Yoono

Callgraph from XUL Profiler, by Yoono

These graphs can be saved in GDF format and used in third party graph tools that read this format.

The next feature is yet more fantastic (but only available with Firefox 3.1b2 or more) : the animated graphical display of how the canvas was refreshed by the browser during the recording session.

It will build an animation that you will be able to play and replay, showing the browser, your mouse movements, and the canvas areas that are refreshed. An opacity layer scale will clearly show what canvas areas most refreshed, they will appear with a red layer that goes darker with each refresh, while the mouse movements across the UI are shown with a small blue dot.
The UI screenshot on the back is not updated with every refresh, but just helps locating the refreshed zones.

Xul Profiler Paint trace

Xul Profiler Paint trace

This tool is already available here, it will shortly be available on Mozilla Add-ons website (waiting for validation).

Of course there is room for improvement, and we already have many ideas.

We devoted a section of our forums to feature requests and bug reports, and will welcome your feedback: http://forum.yoono.com/forum/index.php?c=7

Try it, and let us know what you think !

UPDATE: XUL Profiler is now available on Mozilla Addons! You can download it here.

Related posts:

  1. Yoono’s XUL Profiler Available on Mozilla Add-Ons Last week we The XUL Profiler which is a tool...
  2. Mozilla Launches “Fashion Your Firefox” Mozilla, the maker of Firefox, released Fashion Your Firefox. This...

Related posts brought to you by Yet Another Related Posts Plugin.

  • Will you be placing the code anywhere like Mozdev, Google Code, etc.? I just got done porting it to also work in Songbird and would like to send the changes back upstream to you.
  • dietrich
    Looks fantastic! However, the rows in the treeview are squashed, such that the profiler output is unreadable :(

    I tried in several versions: Fx 3.0.*, 3.1b2, nightly build.
  • Xavier
    This and other glitches have been fixed, look out for the update.
  • Cant wait for the update. It should really be a great platform.
  • Adam Spiers
    I tried this with a simple Google Mail request and found what appeared to be very deeply nested recursive function calls which take an awful lot of time. I'm not sure if that's correct, but it helped me notice an interface bug: if I click on one of the little triangles pointing right to expand the function call hierarchy at that point, it shows the recursive calls; however if I instead expand via the keyboard by hitting Enter then the triangle swivels to point downwards as before, but the sub-hierarchy does not appear.
blog comments powered by Disqus