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