
#14208: Performance with O0 is much better than the default or with -O2, runghc performs the best -------------------------------------+------------------------------------- Reporter: harendra | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by harendra):
my guess would be that when all functions are inlined (e.g., everything is placed in the same module) or when none get inlined, performance is good,
That seems to be a correct observation. When everything is in the same module the simplifier can choose to inline any of the functions while when they are in different modules only those functions that are marked INLINE/INLINABLE get inlined. This is supported by the fact that when we mark the `toList` function INLINE the difference is eliminated to a large extent. Also, it does not go away with `-fexpose-all-unfoldings` but it goes away with `-fspecialise-aggressively`. I also suspect that there is an interaction of `foldr/build` fusion with the simplifier. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14208#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler