diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-06-22 23:04:43 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2021-07-27 17:52:07 +0100 |
commit | e8003e6d0c51f32a41c12f4047405e2355447290 (patch) | |
tree | 59dd3c41f44982fd81ec9caaee206fe1b0c1f3df /libffi | |
parent | e18084960888e18d5b581f0f04ae6fb7ebd0d974 (diff) | |
download | haskell-e8003e6d0c51f32a41c12f4047405e2355447290.tar.gz |
Improve performance of eta expansion
Eta expansion was taking ages on T18223. This patch
* Aggressively squash reflexive casts in etaInfoApp.
See Note [Check for reflexive casts in eta expansion]
These changes decreased compile-time allocation by 80%!
* Passes the Simplifier's in-scope set to etaExpandAT, so we
don't need to recompute it. (This alone saved 10% of compile
time.)
Annoyingly several functions in the Simplifier (namely
makeTrivialBinding and friends) need to get SimplEnv, rather
than SimplMode, but that is no big deal.
Lots of small changes in compile-time allocation, less than 1%
and in both directions. A couple of bigger changes, including
the rather delicate T18223
T12425(optasm) ghc/alloc 98448216.0 97121224.0 -1.3% GOOD
T18223(normal) ghc/alloc 5454689676.0 1138238008.0 -79.1% GOOD
Metric Decrease:
T12425
T18223
Diffstat (limited to 'libffi')
0 files changed, 0 insertions, 0 deletions