
#8763: forM_ [1..N] does not get fused (10 times slower than go function) --------------------------------------------+------------------------------ Reporter: nh2 | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime performance bug | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: --------------------------------------------+------------------------------ Comment (by nh2): @nomeata There is an example I made for this, mentioned in the bug description. The performance I measure for that is: * using `forM_` with `ghc -O`: 2.0 s * using `loop ` with `ghc -O`: 1.6 s * using `forM_` with `ghc -O2`: 0.9 s * using `loop ` with `ghc -O2`: 0.3 s * using `forM_` with `ghc -O2 -fllvm`: 0.75 s * using `loop ` with `ghc -O2 -fllvm`: 0.15 s I tried to make an even smaller benchmark (https://gist.github.com/nh2/11333427) but the performance is identical there although the same thing changes as before. Could you try my two benchmarks and see if you get the same behaviour? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8763#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler