My grain of salt.

I started, just for fun, a programming language for glib named gel:
https://github.com/tigrux/gel

And the benchmark I made, calculates all the primes between 2 and 50k.
https://github.com/tigrux/gel/blob/master/comparison/primes.gel


[var sieve [array]]

[for n [range 2 50000]
    [if [all [lambda [i] [% n i]] sieve]
        [append sieve n]
    ]
]

[print "Calculated " [len sieve] " primes"]

[quit]



1) In the first stages, it used gobjects, it was taking around 2 minutes.

2) Then, I moved to use only compact classes, the time decreased to 40 seconds.

3) After that, I implemented a mechanism to reuse objects, based on a pool,
to avoid calls to g_new, g_free and g_hash_table_new. It then
decreased to 30 seconds.
(that mechanism is currently out of git, because conflicted other experiments)

4) Finally, instead of using g_value_get_int, g_value_set_double, etc
I used macros
to directly get the fields from the GValue structure. The time
decreased from 30 to 20 seconds.

The same code, in python, takes only 2 seconds.

So, no matter if your code is in C or not, there is always lot of room
for improvements,
specially because GLib/GObject tends to have much code to validate and be safe,
that make it slow but trustful.




2011/1/18 Jan Hudec <[email protected]>:
> On Tue, Jan 18, 2011 at 09:18:06 -0300, Erick Pérez Castellanos wrote:
>> I haven't prove it but theoretically can't be slower since Mono
>> applications are running on the top of a virtual machine and Vala
>> applications are native code executed, so kinda hard to think that
>> Mono is faster than Vala, eh !!!
>
> Theoretically, that's not true.
>
> Good just-in-timing run core can run virtual machine code at almost the same
> speed as native code. And a good garbage-collector is faster than malloc/free
> (it pays some cost for surviving object, but for many short-lived objects, it
> is a lot faster) and compacts the working set, which improves cache
> performance. And these days, memory access cost as much as tens of
> instructions, so cache performance can make huge difference.
>
> Of course the cost of using garbage collector is bigger memory consumption,
> because the objects are not recycled immediately.
>
> --
>                                                 Jan 'Bulb' Hudec <[email protected]>
> _______________________________________________
> vala-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/vala-list
>
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to