[Haskell-cafe] Known Unknowns

Simon Peyton-Jones simonpj at microsoft.com
Wed Feb 1 03:38:50 EST 2006


| Here's a brief introduction. I intend to write up (on the performance
page on
| the wiki) a list of things we've done to improve the shootout entries.

Yes, do put what you wrote before on the Wiki.  (The performance-advice
page seems to have vanished but it should be on the user-documentation
wiki somewhere.  I'm sure we'll find it.)

| Multiple calls to sin. Hmm  :/ And similar for cos, as well as k*k.
Not sure
| why GHC isn't removing these (SimonM?), so let's do that by hand

GHC doesn't do full CSE.  It'd be a relatively easy pass for someone to
add, but it can cause space leaks.  And it can replace two
strictly-evaluated calls with one lazy thunk:
	let { x = case e of ....;  y = case e of .... } in ...
  ==>
	let { v = e; x = case v of ...; y = case v of ... } in ...
 

Instead GHC does "opportunistic CSE".  If you have 
	let x = e in .... let y = e in ....
then it'll discard the duplicate binding.  But that's very weak.  I've
added this to the GHC FAQ

Simon




More information about the Haskell-Cafe mailing list