Yay!

Can you also try parrot with int keys and float values? Just for curiosity.

-- 
Bacek

On Thu, Mar 15, 2012 at 11:30 AM, Luben Karavelov <[email protected]> wrote:
> Hello guys,
>
> I was looking for a way to speed up some heavy computations
> we are making @work so I have written small benchmark that:
>
> 1. reads 5000 sparse vectors from disk
> 2. computes inner product of the last 100 vectors
>   with all the vectors before them
>
> The representation that we are using for sparse vectors is
> hash tables. I have written this small test case in
> several languages, including PIR. In every program the load
> time is under 2 seconds and the math is quite simple, so
> what this is stress testing hash tables code.
>
> Here are the results (some of them surprising)
>
>        time    mem
> clojure 32      449536
> racket  70      168060
> c++     40      75180       map<int,float>
> c++     43      68960       unordered_map<int,float>
> perl    33      117904
> lua     26      108540
> luajit  6       68072
> haskell 23      1027504     Data.IntMap Float (compiled)
> parrot  28      360992      Hash PMC_keys PMC_vals
> parrot  15      263628      Hash int_keys PMC_vals
>
> So, my small comment: we are not bad at all. Luajit comes
> first but we are quite fast even without JIT.
>
> The biggest disappointment for me are statically typed
> compiled languages - they had all the time to optimize
> the code, they had proper information in order to use
> native, unboxed values but their performance is quite bad
> C++ uses 7x the time of the first (luajit) and haskel
> uses 10x times the memory.
>
> Another observation: it looks like luajit infers key and
> value datatypes and stores them unboxed.
>
>
> I hope you find this interesting
> Best regards
>
> --
> Luben Karavelov
> _______________________________________________
> http://lists.parrot.org/mailman/listinfo/parrot-dev
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to