The static argument transformation is currently run only when –fstatic-argument-transformation is specified; i.e almost never. It has not received any love for
some time. I note the following comment from Max Bolingbroke in DynFlags.hs
-- , ([2], Opt_StaticArgumentTransformation)
-- Max writes: I think it's probably best not to enable SAT with -O2 for the
-- 6.10 release. The version of SAT in HEAD at the moment doesn't incorporate
-- several improvements to the heuristics, and I'm concerned that without
-- those changes SAT will interfere with some attempts to write "high
-- performance Haskell", as we saw in some posts on Haskell-Cafe earlier
-- this year. In particular, the version in HEAD lacks the tail call
-- criterion, so many things that look like reasonable loops will be
-- turned into functions with extra (unnecessary) thunk creation.
I’m therefore reluctant to commit refactoring to SAT. They will, in effect, be entirely un-tested.
There is a ticket here:
https://ghc.haskell.org/trac/ghc/ticket/9374 Do by all means add your diffs to it, so that if anyone (possibly even you) picks it up they will get the benefit of your work.
Simon
From: ghc-devs [mailto:ghc-devs-bounces@haskell.org]
On Behalf Of David Feuer
Sent: 07 September 2014 04:06
To: ghc-devs
Subject: Trying to fix an efficiency issue noted in a TODO in SAT.hs
compiler/simplCore/SAT.hs has a TODO comment about the fact that it does a fair bit of appending onto the ends of lists, and that should be done differently. I made an attempt to fix it. The complexity of the
recursion, however, leaves me uncertain as to whether I really did or not. I've attached a diff and I hope someone will be able to take a look at it. The only use of Sequence.fromList is source line 172, and the only significant use of Foldable.toList (aside
from pretty-printing) is on source line 402. Note that the use of Sequence may be temporary—I want to get the right code structure down before choosing the best data structure.
Thanks,
David Feuer