On 03/02/2010 17:59, Serge D. Mechveliani wrote:
To my
Dear GHC team,
It looks like ghc-6.12.1 reports erroneous time profiling --
when the Main module of the project is made under -O.
[..]
This is for ghc-6.12.1 made from source for Debian Linux and
i386-like.
Main.main calls for Complete.complete, `complete' calls for
eLoop inside its source.
eLoop must take almost all the time.
My whole user library is made under -O -prof, and
--enable-library-profiling.
Main is compiled by
ghc $dmCpOpt -prof --make Main
and run by ./Main +RTS -M400m -pT -RTS
For this key, the profiling report Main.prof looks natural and shows
eLoop -- 97%.
But for ghc $dmCpOpt -O -prof --make Make,
it shows a different thing: zero for eLoop and 99% for `main'.
On Wed, Feb 03, 2010 at 05:38:36PM +0100, Daniel Fischer wrote:
Could be that eLoop is inlined with -O.
Thank you.
I also thought about this. But the question still looks difficult.
Try
ghc $dmCpOpt -O -prof -auto-all --make
That should show eLoop (if that's a top-level declaration, otherwise you'd
have to insert a pragma {-# SCC "eLoop" #-} manually).
eLoop is not a top-level declaration, and I do set {-# SCC "eLoop" #-}.
The key combination
ghc $dmCpOpt -prof --make Main
shows 95% for eLoop,
and adding -O to this line shows 0% for eLoop, independently on
presence of -auto-all in this line
(the whole library is made under -O -prof).
There are known bugs in this area, see e.g.
http://hackage.haskell.org/trac/ghc/ticket/2552
Yes, I recall that the effect may be of inlining.
Inlining should not in general affect the shape of the profile. I can't
say much else here without seeing the specific code.
Cheers,
Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users