$ valac --disable-assert -X -Ofast -o valabf bf.vala
I rewrote the C# benchmark, from here(brainfuck). But the results are disappointing, vala with Ofast will come out 9 seconds, while C# 4, C++ 2.
(I remade Gee.ArrayList in a regular array that gave 3 seconds( was 12), and the Compact classes that gave a second)
Does such an overhead give the use of GLib, or I do not notice something?
PS If I am changing the Tape in to struct I get double free or corruption (fasttop)
 15104 abort (core dumped)./ valabf bench.b
The foreach loop in _run() copies the entire array every time. Try foreach(unowned Op op…). That shaved off 3/4 of the runtime here.
Omg ty, I knew it, but I didn’t think about it at all. Perhaps because in C# there was the same code, so I didn’t think about how to change the code itself, but only about what structures to change, like List to obynchny .
Unfortunately in Vala does not work unowned inside foreach:
Invalid assignment from owned expression to unowned variable. So I just changed it to
for, now its 2.3 seconds!
Interesting. Seemed to work here with Vala 0.40.17
Its really strange, Im on Vala 0.46.5 now.
PS Forgot to–disable-assert flag, now it’s 1.81 s, which is faster then D(2.692), C++(2.04).
@jensgeorg It seems that Vala will take the first place in parsing the big brainfuck program mandel.b https://github.com/nuald/benchmarks/tree/vala-follow-up
UPD in master now https://github.com/kostya/benchmarks
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.