[GHC] #13220: Performance regressions in testsuite from join points
GHC
ghc-devs at haskell.org
Fri Feb 10 02:59:10 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 lukemaurer):
Replying to [comment:2 bgamari]:
> I'm actually not sure that the effect on compiler performance is all
that modest, unfortunately.
[[https://perf.haskell.org/ghc/#revision/8d5cf8bf584fd4849917c29d82dcf46ee75dd035|Gipeda]]
shows that the build time for GHC itself went up by 13%. While some
increase is to be expected, this is quite significant. Are there any
obvious knobs that could be adjusted to reduce the amount of work that the
join point analysis/simplifier do under `-O1`? The full analysis is great
for `-O2`, but I do fear that users will be up in arms if the GHC
regression is representative of user code.
There isn't anything obvious—the occurrence analyser looks for join points
as it goes, and that process should only be a small constant overhead.
Nothing in the simplifier (or elsewhere that I can think of) has to work
particularly hard to handle join points (or it shouldn't, anyway!).
> Also, strangely enough, while the join points work eliminated all
allocations from `fannkuch-redux`, the actual runtime of this test might
have actually gone up by 8%. I say "might have" since runtime measurements
are notoriously unstable, but it does look likely that this is a real
regression: the test's runtime is quite long (4 seconds) and 8% is quite a
large change. Even if this measurement were off by a factor of two we
would want to understand it. Can you shed any light on this, Luke?
I haven't seen that jump before, and it's not obvious why it would happen.
A quick diff of the dumps shows that the two versions end up with wildly
different code, so it may be hard to pin any particular culprit.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13220#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list