[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