On Sat, 27 Mar 2004, Adrian Hey wrote:
Also, I have a hunch that not only is eager evaluation inherently more efficient (in terms of the raw number of operations that need to be performed), it's probably more cache friendly too (you probably end up with code that looks far more like a traditional imperative loops and whatnot that you'll get by performing "itsy bitsy on demand" graph reduction).
Branch misprediction causes problems too, at least with GHC's STG-machine.
All this is, of course, pure speculation and intuition on my part. (I can't produce a shred of evidence to justify these remarks :-)
Check out www.cl.cam.ac.uk/~njn25/pubs/cache-large-lazy2002.ps.gz for more detail (probably more than you want :) about this. Analysing this stuff is very difficult. N