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.

No related posts.

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

  • sandyxxx
    i used to work for a fashion company where 1/2 of my day was spent writing on other blogs in the form of fake comments. my

    boss would come in and say "google emoda and see what comes up on blogs, make sure you combat all the negative ones,

    just sound like a happy customer". needless to say it was awful and i eventually quit. the truth is, if you produce a quality

    product and perform with quality service, you wont need to worry about anyone else. :)

    great deals--
  • 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.
  • Cant wait for the update. It should really be a great platform.
  • Xavier
    This and other glitches have been fixed, look out for the update.
  • 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.
  • 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.
blog comments powered by Disqus
preload preload preload