On 17.06.10 12:40, Roman Cheplyaka wrote:
> From reading core I got the impression that everything is strict&
unboxed. Perhaps this is related to creating some closures? How to get
rid of those allocations?
Yes, "distance" creates a closure of type @Double -> Double# -> Double@
which is obviously not necessary. I do not know why.
2. Again from reading the core I learned that although 'l' and other
constants are inlined, their type is boxed Double. This makes sense
since CAFs are evaluated on demand, but obviously in this particular
case it does not make sense, so can I somehow make them unboxed
Hmm, I learned from "-ddump-core" that "distance" function uses constant
"25.0".
There is another way to optimize — make GHC use floating point "abs"
processor instruction. Now it uses
{{{
abs x | x >= 0.0 = x
| otherwise = negateDouble x
}}}
http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/GHC-Float.html
--
Best regards,
Roman Beslik.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe