[GHC] #11735: Optimize coercionKind
GHC
ghc-devs at haskell.org
Mon Jan 29 11:16:56 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):
I ran a selection of commits against two test inputs: Grammar.hs, as
above, and the `test_rules2.hs` file from #5631. Here's a list of
execution times for both:
{{{
--- ./cases/Grammar.hs ---
452dee3ff4: 245.51
4572849929: 19.62
4eb140f564: 12.25
8a6aa5030d: 12.26
d74b37d565: 16.14
--- ./cases/test_rules2.hs ---
452dee3ff4: 1.20
4572849929: 1.19
4eb140f564: 1.19
8a6aa5030d: 1.23
d74b37d565: 1.18
}}}
The commits are:
{{{
452dee3ff4: GHC `master` before branching off on this issue (should be the
same as GHC HEAD)
4572849929: Simon's patch from [comment:5] applied.
4eb140f564: After "un-refactoring"
8a6aa5030d: With coercion roles cached, and mkNthCo taking an extra Role
argument
d74b37d565: current HEAD of wip/tdammers/T11735
}}}
(Note that the execution times are a bit faster overall in this run
because I didn't pass any `-ddump` flags, so GHC spends no time pretty-
printing the dumps).
So, conclusions:
- The [comment:5] patch makes a huge difference for `Grammar.hs` (down to
less than 10% in execution time)
- "un-refactoring", strangely enough, improves performance on `Grammar.hs`
by roughly another 25% or so
- caching coercion rules in NthCo doesn't seem to make a difference at
all, and even makes things slightly worse (this one is truly baffling IMO)
- improvements from [comment:41] make the `Grammar.hs` test case worse
(this, too, is unexpected)
- none of the changes here seem to affect performance for the
`test_rules2.hs` case much, if at all
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11735#comment:46>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list