
#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: #11565 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * related: => #11565 Comment:
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.
And no, 8.0.2 fully specialises irrespective of the number of worker arguments. Specialisation in 8.2 depends on the number of arguments the
Where is this `wstream_Strng2_V_1` function that you refer to? It would be helpful to see a concrete example. pattern to be specialised has. This change is due to two causes: * a48de37dcca98e7d477040b0ed298bcd1b3ab303, which fixes #11565 where `-fmax-worker-args` was simply ignored * f93c363fab1ac8ce6f0b474f5967b0b097995827, which extended the reach of `-fmax-worker-args` to include SpecConstr in order to improve compiler performance. Perhaps you want the SpecConstr limit to be independent from the worker/wrapper limit? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14003#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler