Re: [Vala] Vala vs Mono performance benchmark project



On 30/01/11 19:55, Aleksander Wabik wrote:
Hi All,

I've prepared a little benchmark measuring Vala object system
performance ( http://gitorious.org/vala-object-benchmarks )

- object creation and destruction
- method, virtual method, interface method, signal, delegate, delegate
   from a closure calling times
- type checking
- threading locks

This benchmark is not intended to measure general performance (we have
vala benchmarks in http://code.google.com/p/vala-benchmarks/ for this),
but just to measure object system performance. From what I've seen:

- type checking 2 times slower than in Mono
- threading (locks) in vala beats mono easily - 19 seconds vs 50
   seconds!!
- object creation/destruction suck
- setting/reading property or field beat Mono easily, but I think it's
   the matter of compiler optimization; but in classes inheriting from
   GObject setters are very expensive (due to issuing a signal)
- calling methods, virtual methods, delegates, lambdas - vala beats
   mono, but slightly
- interface methods, signals - we really suck, and there's no excuse
   for this. I guess that it can't be fixed in glib, but in dova...?
- ref/unref - we really suck
- weak ref/unref - we beat Mono easily, I guess that even if the
   pointer assignment was not optimized out by a compiler we'd do this.
   Mono is surprisingly bad at this.

I guess that at least some of the vala performance drawbacks can be
fixed in dova, as it's a total redesignment of the object system,
true?

If some of you would like to add some benchmarks / fix something in the
existing ones, please do this, and have fun with the code that I made ;)

best regards,


Hey Alex, any chance you could summarize your results in more concrete 
numbers? Something like:

- type checking:
Vala(default): +200%time(slower). Vala(dova): +50%time(slower).
- threading
Vala(default): -200%time(faster). Vala(dova): -250%time(faster).

Thanks.

Hi,

sorry for late reply.

I did not plan to produce sophisticated analysis, and certainly there's
no point in doing it by hand. On the other hand, some automated graph
or chart generation system (as in vala benchmarks, using gnuplot) would
be a nice thing. Maybe I'll do this in the future; on the (yet) other
hand, if you do this before me, I'll be happy to merge it into the main
repository of vala-object-benchmarks :)

best regards,


-- 
Mój klucz publiczny o identyfikatorze 1024D/E12C5A4C znajduje się na
serwerze hkp://keys.gnupg.net

My public key with signature 1024D/E12C5A4C is on the server
hkp://keys.gnupg.net

Attachment: signature.asc
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]