[GHC] #8326: Place heap checks common in case alternatives before the case
GHC
ghc-devs at haskell.org
Thu Aug 30 13:33:39 UTC 2018
#8326: Place heap checks common in case alternatives before the case
-------------------------------------+-------------------------------------
Reporter: jstolarek | Owner: (none)
Type: task | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.7
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking: 8317
Related Tickets: #1498 | Differential Rev(s): Phab:D343
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by AndreasK):
Replying to [comment:42 michalt]:
> What is the status of this ticket?
>
> I've tried the patch suggested in comment:34, but my results of nofib
were quite different, with some clear regressions (below I've removed
anything where the difference was <2%)
>
> NOTE: I don't have much experience with investigations like this, so the
whole analysis might be quite wrong. ;) Please let me know if something
seems off. I'll attach the dump of STG/cmm/asm from both versions of
`k-nucleotide` (with and without the patch).
When I experimented with the order in which we generate uniques I also got
a regression of ~18% for one of the shootout benchmarks, I think it was
k-nucleotide but could have been another one.
So while I don't doubt that there is a regression for k-nucleotide with
this patch it doesn't have to be because the code we generate is worse for
the general case. One really has to look at the Asm/Cmm for that.
> it is not clear to me what to do if we have combination of the above
(more than one branch that allocates heap and at least one branch that
does not).
In the long run we should do some static analysis to help us determine the
hot code path.
Eg distinguish between:
* Alternatives leading to recursion
* Alternatives being called once.
* Bottoming alternatives.
There are some ideas and work on that in #14672.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8326#comment:44>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list