Hello Anatoly,

Sunday, July 1, 2007, 3:58:24 AM, you wrote:

> Anyone have any pointers on how to get hashElem and updateElem to run
> faster, or any insight on what exactly they are allocating.  To me it
> seems that those functions should be able to do everything they need
> to without a malloc.

haskell allocations isn't a malloc, it's just a pointer increment, so
it's very fast. any temporary data created in haskell code need to be
allocated so the only case when you don't have allocations is cycle on
unboxed values

in your particular case you should try the following trick:

   aa <- unsafeRead a5 0
   return $! aa
   bb <- unsafeRead a5 1
   return $! bb

currently, your code implies that unsafeRead may return boxed value.
'let' by itself doesn't enforce unboxing, the compiler implies that
value assigned in 'let' may be actually not used. you can use either
'case' or above-mentioned trick with '$!' (or seq) to avoid boxing

-- 
Best regards,
 Bulat                            mailto:[EMAIL PROTECTED]

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to