Jump to navigation

Poupou's Corner of the Web

Looking for perfect security? Try a wireless brick.
Otherwise you may find some unperfect stuff here...


Gendarme ♥ Cecil/Light

It's been a while since I published some benchmark numbers on Gendarme. Now with 2.10 there was a huge change by using the shiny new Cecil (aka cecil/light) library from the ever amazing JB Evain. So clearly a revision was in order...

Here's a table with some common Mono applications I frequently use:

#assemblies gendarme 2.6 gendarme 2.8 gendarme 2.10 ratio (%)
211 rules 221 rules 254 rules between 2.8 / 2.10
banshee 18 10.0 s 10.0 s 9.5 s 95 %
f-spot 23 11.1 s 10.7 s 8.3 s 78 %
gnome-do 12 4.5 s 4.3 s 2.9 s 67 %
monodoc 4 2.1 s 2.1 s 1.4 s 67 %
tomboy 1 3.1 s 3.6 s 2.3 s 64 %
mono (2.0 profile/default) 101 89.3 s 106.2 s 94.4 s 89 %
mono (2.0 profile/self-test)101 658.7 s 580.5 s 454.1 s 78 %


  1. Gendarme was always executed with the matching version of Mono (e.g. Gendarme 2.6 is executed on Mono 2.6...). Mono is getting better and it shows on Gendarme too;

  2. The percentage changes shown are the one between 2.8 and 2.10 since I wanted to highlight the impact, even with the new rules, of using the new Cecil library. Obviously the update is a success performance wise too;

  3. All runs, except mono (2.0 default), are executed using the 'self-test' rule set. Before 2.10 that meant 'default' + Smells rules. Since 2.10 it means 'default' + Smells + Interoperability.Com + Gendarme (rules), i.e. everything except the new (3) nunit related rules.

  4. A direct comparison with the my earlier blog entry, between 2.0 and 2.2, is not easy. Way too many things changed in the last two years. However you can see that analyzing today's 101 assemblies from Mono 2.0 profile can be faster (e.g. self-test) than analyzing the 85 assemblies available two years ago. Yep the same hardware is being used to benchmark, but it was running an earlier release of openSUSE back then :-).

I'm slowly running out of ideas to continue this "more rules, more code, less time" trend much longer. In fact I only have two more in mind... but with out awesome new profiler I'm sure I'll come up with other ideas sooner than later.

1/24/2011 16:53:27 | Comments | Permalink

Gendarme 2.10 preview

A preview of Gendarme version 2.10 is now available to download for win32, while Linux packages (mono-tools) should be available soon.

There are many changes (huge Cecil cecil update, new rules) in this release so testing would be much appreciated.

You can see known issues (and enhancements request) in our bugzilla. Thanks!

1/17/2011 08:33:17 | Comments | Permalink

CoreCLR How To

There are quite a few wiki pages about CoreCLR (itself), how it is used in the Moonlight plugin to provide a secure sandbox, it's current status (ok, that part is not up to date ;-) and how we validate all of this.

So what was missing was not facts but orientation. It kind of make sense, most people are not doing an open source implementation of Silverlight, we are. However we're providing a lot of cool (yes it is ;-) stuff within - stuff, like coreclr, xaml, the cecil-based linker... that can be reused in other projects. Ok, I agree it is an easy prediction since most of them already are :-).

So the missing piece is an how to for people wishing to enable CoreCLR when embeding mono in their own application. It does not bring a lot of new facts but, hopefully, it will order them in a more useful way.

Now that this is completed I'll (slowly) be reviewing/updating the related wiki pages. I do not expect many changes (for most of them) since what's described simply does not change often. Old text can become history, but it won't turn false from being old alone ;-). In any case I'll do my best to remove any duplication, bad links... and yes a bit of freshening up.

Once this is done new updates will be feedback based (i.e. no feedback, no update) unless the design changes drastically. Have fun :-).

1/13/2011 20:41:06 | Comments | Permalink

Google Code In - Last (7th) Week

Game over. A total of 45 tasks (+1 this week) were completed during Google Code In 2010, splitted like this:

Tasks about... # mentor
Gendarme 30 tasks spouliot
MonoDevelop 9 tasks mhutch
Mono.Cairo docs 3 tasks miguel
Updating tools to use Mono.Options 2 tasks andreia
VB.NET1 task rolf

In most cases a lot more tasks were open, so we were not lacking where the student interest was focused.

Congratulations to all students, ours in particular, and mentors and, of course, Google itself. It's been a great time, even if busy some times, and I hope this event will be back next year :-)

1/12/2011 08:45:06 | Comments | Permalink

Google Code In - Week 6

Happy New Year 2011! I'm officially back to work this morning but Google Code In did not really stop. Slower than usual but that was expected :-). Mono (registred melange user) totals for the 6th week are:

  • 44 tasks were completed, +3 this week
  • 0 tasks are currently claimed / worked on, no change this week
  • 14 tasks are open and ready to be claimed by students, +1 this week
  • 19 other tasks are (still) unpublished, no change this week

Note that we're in the last week of the contest! Unregistred users can see all tasks from here and filter them by organization (e.g. mono).

1/3/2011 08:57:15 | Comments | Permalink

The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of my employer.