
#10800: vector-0.11 compile time increased substantially with 7.10.1 -------------------------------------+------------------------------------- Reporter: bgamari | Owner: bgamari Type: bug | Status: new Priority: highest | Milestone: 8.0.1 Component: Compiler | Version: 7.10.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by bgamari): Well this potentially is interesting... `vector`'s test suite defines a type class `TestData`, {{{#!hs class (Testable (EqTest a), Conclusion (EqTest a)) => TestData a where type Model a model :: a -> Model a unmodel :: Model a -> a type EqTest a equal :: a -> a -> EqTest a }}} The `-ddump-simpl` output produced by 7.10 contains a variety of bindings referring to types containing `Model`, e.g., {{{#!hs lvl18 :: Model (Vector (Bool, Bool, Bool) -> (Vector Bool, Vector Bool, Vector Bool)) -> Vector (Bool, Bool, Bool) -> (Vector Bool, Vector Bool, Vector Bool) }}} whereas the Core produced by 7.8 contains no such references. I'm not sure whether this is problematic or not The simplified testcase above produces 6500 lines of Core in 7.10 and around 800 with 7.8. Despite the failure to resolve the `Model` type family, 7.10 seems to generally be doing more simplification. I believe much of the difference is due to the fact that 7.10 inlines the `$fTestData(,,)` dictionary whereas 7.8 does not. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10800#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler