... | ... | @@ -298,3 +298,16 @@ Random note: GHC 7.10's build system actually disabled DPH (half a dozen more pa |
|
|
- GHC takes significantly more memory compiling the `xmlhtml` library with `-j4` than `-j1` (1GB vs 150MB). See [\#9370](https://gitlab.haskell.org//ghc/ghc/issues/9370).
|
|
|
- The `Language.Haskell.Exts.Annotated.Syntax` of `haskell-src-exts` takes many tens of seconds to compile. Howeever, this may not be surprising: Consists of roughly 70 data definitions, some with many constructors, `deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable)` on most of them as well as defining `Functor`.
|
|
|
- `vector-algorithms` may be a nice test and reportedly got slower to compile and run in recent GHC releases.
|
|
|
|
|
|
## Relevant changes
|
|
|
|
|
|
### GHC 7.10 to GHC 8.0
|
|
|
|
|
|
- The performance effect of the `TypeInType` merge shows up in [b5d5d83122c93c2a25839127edfd6b2df7ed6928](/trac/ghc/changeset/b5d5d83122c93c2a25839127edfd6b2df7ed6928/ghc) ("Revert .gitmodules changes from 6746549772c5") due to various broken intermediate commits.
|
|
|
- [91c6b1f54aea658b0056caec45655475897f1972](/trac/ghc/changeset/91c6b1f54aea658b0056caec45655475897f1972/ghc) is a refactoring of the `Typeable` implementation which moves `Typeable` dictionary generation from evidence generation time to the point where the represented type is defined. This tends to regress compile allocations by a few percent for programs defining lots of types (although programs which make large use of `Typeable` may see improvement).
|
|
|
|
|
|
### GHC 8.0 to GHC 8.2
|
|
|
|
|
|
- [f53d761df9762232b54ec57a950d301011cd21f8](/trac/ghc/changeset/f53d761df9762232b54ec57a950d301011cd21f8/ghc) ("TysWiredIn: Use UniqFM lookup for built-in OccNames") improves the efficiency of built-in `OccName` lookup, resulting in a 2-5% improvement in compiler allocations on nofib. This was noticed due to unexpectedly large allocations regressions in [dd3080fe0263082f65bf2570f49189c277b12e28](/trac/ghc/changeset/dd3080fe0263082f65bf2570f49189c277b12e28/ghc) ([\#12357](https://gitlab.haskell.org//ghc/ghc/issues/12357)).
|
|
|
- [ed4809813fa51524ae73a4475afe33018a67f87d](/trac/ghc/changeset/ed4809813fa51524ae73a4475afe33018a67f87d/ghc) ("InstEnv: Ensure that instance visibility check is lazy") fixes a bug introduced earlier change ([4c834fdddf4d44d12039da4d6a2c63a660975b95](/trac/ghc/changeset/4c834fdddf4d44d12039da4d6a2c63a660975b95/ghc)) in the instance visibility check which broke laziness of instance resolution. This reduces compiler allocations by roughly 5-10% on nofib. The underlying bug was noticed by unexpectedly large allocation regressions due to [673efccb3b348e9daf23d9e65460691bbea8586e](/trac/ghc/changeset/673efccb3b348e9daf23d9e65460691bbea8586e/ghc) and [4e6bcc2c8134f9c1ba7d715b3206130f23c529fb](/trac/ghc/changeset/4e6bcc2c8134f9c1ba7d715b3206130f23c529fb/ghc), which added instances to various `base` modules ([\#12367](https://gitlab.haskell.org//ghc/ghc/issues/12367)).
|
|
|
- [eb3d6595735671605c5d6294a796dc0f16f784a4](/trac/ghc/changeset/eb3d6595735671605c5d6294a796dc0f16f784a4/ghc) ("OccName: Avoid re-encoding derived OccNames") is a refactoring which reduces allocations in the computation of derived `OccName`s by eliminating `String` intermediates. |