
#14003: Allow more worker arguments in SpecConstr -------------------------------------+------------------------------------- Reporter: choenerzs | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: 8.2.2 Component: Compiler | Version: 8.2.1-rc3 Resolution: | Keywords: JoinPoints, | Fusion Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by choenerzs): I'm using a lot of intermediate data constructors for control flow which are all eliminated if SpecConstr runs to completion. The ```100``` for W/W was only to provide a ceiling I'm not likely to bump against. However, this is part of the problem, in that the user of the library now needs to think about which value to give W/W. The function wstream_Strng2_V_1 becomes more than x10 faster if specconstr runs to completion and allocates *a lot* less (in my allocation benchmark it is 48 bytes versus ~ 600 Kilo-bytes . It has arity 18 after full SpecConstr. In GHC 8.0.2 and earlier, I did not have to change the maximal number of W/W arguments for SpecConstr. The core output for v1-slow (W/W = 10) and v1-fast (W/W = 100) is given as attachments. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14003#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler