[Haskell-cafe] Understanding GHC allocations
Roman Cheplyaka
roma at ro-che.info
Thu Jun 17 05:43:09 EDT 2010
* Roman Cheplyaka <roma at ro-che.info> [2010-06-17 12:40:59+0300]
> I'm trying to optimize the following program:
> http://github.com/feuerbach/particles/blob/303c8a17c9b732e22457b5409bdce4b7520be94a/run.hs
>
> Of course general suggestions are welcome (BTW I'm going to give a try
> to vector), but currently I'm concerned with two questions:
>
> 1. Heavy allocations in 'distance' function. Here is (part of) the profile:
>
> COST CENTRE MODULE %time %alloc ticks bytes
>
> d2 Main 9.0 22.0 290 600000000
> d Main 8.6 65.9 278 1800000000
> d1 Main 7.5 11.0 242 299700000
>
> >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?
>
> 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?
Forgot to mention, I'm using ghc 6.12.1, compiling with -O2.
--
Roman I. Cheplyaka :: http://ro-che.info/
"Don't let school get in the way of your education." - Mark Twain
More information about the Haskell-Cafe
mailing list