Re: [Vala] GObject allocation / referencing... Why is so slow?



Hello,

could you run the benchmark with the following parameters which enable
some compiletime optimizations?

$ valac bench.vala --save-temps -v --Xcc="-O3"
--Xcc="-DG_DISABLE_CHECKS" --Xcc="-DG_DISABLE_ASSERT"
--Xcc="-DG_DISABLE_CAST_CHECKS" --Xcc="-march=native"

- fabian

Am Freitag, den 14.01.2011, 17:28 +0100 schrieb Marco Trevisan
(Treviño):
I'm doing some benchmarks with Vala, but I found that its performances
aren't so great as I expected when a class is used, and mostly when it's
allocated/referenced multiple times...

Consider, for example, the simple example attached... The source simply
allocates many TestObject's, referencing them in varius ways, and then
freeing them after some time. Maybe it's not perfect, but it does what I
wanted.

However, also if the created object is very simple Vala with the gobject
profile it's quite slow.

In fact, also if with the results can't be compared to the hand-written
C attached code (I've written it fastly, maybe it has errors :P),
comparing Vala+Gobject and Vala+Dova underlines some differences:

|     N       |  Vala-Gobject  |   Vala-Dova  | Handwritten C | Mono C#  |
|-------------+----------------+--------------+--------------------------|
|   5000000   |     2.367s     |    0.952s    |    0.310s     |  0.404s  |
|-------------+----------------+--------------+---------------+----------|
|   50000000  |     24.224s    |    10.152s   |    3.169s     |  3.662s  |
|-------------+----------------+--------------+---------------+----------|
|  100000000  |     48.402s    |    20.364s   |    6.126s     |  7.112s  |
|------------------------------------------------------------------------|

Now, the C code can't be beaten, of course, but if you compare the
Gobject profile to the Dova one (also if it's immature), there's a great
performance gap!

And this gobject slowness is underlined in other more complex
benchmarks, compared to Dova too...

I guess that a gobject structure is really more complex compared to the
ones defined by Dova (or by simple C), but if Vala has these
performances, due to GObject mamangement, even the (evil) Mono C# seems
to be better (code attached, ported from the Vala syntax).

So, how to improve this? Is really everything related to gobject or is
it also Vala which has responsibilities in this?
_______________________________________________
vala-list mailing list
vala-list gnome org
http://mail.gnome.org/mailman/listinfo/vala-list





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