[GHC] #13220: Performance regressions in testsuite from join points
GHC
ghc-devs at haskell.org
Sat Feb 11 18:41:43 UTC 2017
#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
More information about the ghc-tickets
mailing list