cross module optimization issues

John Lato jwlato at gmail.com
Tue Nov 18 05:57:15 EST 2008


On Sat, Nov 15, 2008 at 10:09 PM, Don Stewart <dons at galois.com> wrote:
> jwlato:
>> Hello,
>>
>> I have a problem with a package I'm working on, and I don't have any
>> idea how to sort out the current problem.
>>
>> One part of my package is in one monolithic module, without an export
>> list, which works fine.  However, when I've started to separate out
>> certain functions into another module, and added an export list to one
>> of the modules, which dramatically decreases performance.  The memory
>> behavior (as shown by -hT) is also quite different, with substantial
>> memory usage by "FUN_2_0".  Are there any suggestions as to how I
>> could improve this?
>>
>
> Are you compiling with aggressive cross-module optimisations on (e.g.
> -O2)? You may have to add explicit inlining pragmas (check the Core
> output), to ensure key functions are exported in their entirety.
>

Thanks for the reply.

I'm compiling with -O2 -Wall.  After looking at the Core output, I
think I've found the key difference.  A function that is bound in a
"where" statement is different between the monolithic and split
sources.  I have no idea why, though.  I'll experiment with a few
different things to see if I can get this resolved.

John


More information about the Glasgow-haskell-users mailing list