
#9476: Implement late lambda-lifting -------------------------------------+------------------------------------- Reporter: simonpj | Owner: sgraf Type: feature request | Status: closed Priority: normal | Milestone: 8.8.1 Component: Compiler | Version: 7.8.2 Resolution: fixed | Keywords: LateLamLift Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #8763 #13286 | Differential Rev(s): Phab:D5224 Wiki Page: LateLamLift | -------------------------------------+------------------------------------- Comment (by sgraf): I was referring to the `paraffins` measurements in comment:55. Deactivating the closure growth checks (thus allowing more bindings to lift at the potential cost of more allocations) leads to an overall improvement, most significantly visible in `paraffins` with an increase of 18% in allocations but 11% less executed instructions. The measurements I posted are for runtime. There's a reproducible speedup (0.533s vs 0.581s), too, which is mostly due to trading time in the GC for time in the mutator. That's also apparent by resizing the nursery so that no GC needs to happen (the second pair of measurements with `-A600M`). I regard this as 'better code', because it's faster in the default case, where we don't tune the nursery to fit all allocations, i.e. more mutator time is OK as long as total time goes down. In comment:56 I go on to wonder why that is the case. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9476#comment:58 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler