[GHC] #11735: Optimize coercionKind

GHC ghc-devs at haskell.org
Thu Feb 1 09:42:29 UTC 2018


#11735: Optimize coercionKind
-------------------------------------+-------------------------------------
        Reporter:  goldfire          |                Owner:  (none)
            Type:  task              |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.10.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by tdammers):

 Replying to [comment:60 goldfire]:
 > I think I see what's going on here. The "cached role" results are from
 commit 8ac966971ec6c30cc3681a913fb9fb1c2342f6cc. This version eagerly
 computes the role for an `NthCo` in `mkNthCo`. This means that every
 (`seq`ed) `NthCo` requires a role calculation. Perhaps sometimes, we
 create an `NthCo` and never ever check its role. If that's the case, then
 8ac96 will be worse.
 >
 > On the other hand, what if you try my commit
 8a6aa5030d34592200fbe799bf38abf3701544db? (Do not be thrown off by the
 same first two characters of the hash! I was.) That commit supplies the
 role to `mkNthCo`, as it can often be deduced by the caller of `mkNthCo`
 without too much trouble. No redundant role computation. This one should
 really be a clear win.

 I've done another run using just these three commits, and it shows that
 the last one is slightly better than the original situation for the
 `test_rules2` case, and about the same for the `Grammar.hs` case:

 {{{
 --- ./cases/Grammar.hs ---
 4eb140f564: 12.31
 8ac966971e: 12.70
 8a6aa5030d: 12.31
 --- ./cases/test_rules2.hs ---
 4eb140f564: 1.11
 8ac966971e: 1.14
 8a6aa5030d: 1.09
 }}}

 So the `8ac...` commit makes things slightly worse, but at `8a6...` we're
 back at equal-or-better.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11735#comment:66>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list