
#13220: Performance regressions in testsuite from join points -------------------------------------+------------------------------------- Reporter: lukemaurer | Owner: lukemaurer Type: bug | Status: new Priority: highest | Milestone: 8.2.1 Component: Compiler | Version: 8.1 Resolution: | Keywords: JoinPoints Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by rwbarton): There are two issues here. * Core Lint is expensive, and join points made it more expensive. For example `HsExpr` took twice as long to compile with `-O -dcore-lint` as with `-O`, before join points; and three times as long, after. I'm still waiting on some builds to finish, but I suspect most of the 13% build time regression is attributable to extra Core Lint checks added with join points. Just looking at the code, `markAllJoinsBad` looks somewhat expensive; and it is called on the right hand side of every binding, the body of every lambda, the scrutinee of every case, etc. This doesn't affect normal users, who won't use `-dcore-lint`. * Normal compiles (without `-dcore-lint`) are also slightly slower after join points. I'm working on getting better data on this and looking for outlier modules where the build time went up a lot. At Simon's suggestion, I looked at program sizes but they went up only a tiny bit on average (< 1%). The number of simplifier iterations also increased a tiny bit (< 1%). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13220#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler