
15 Feb
2011
15 Feb
'11
5:04 p.m.
On Tuesday 15 February 2011 22:20:06, Claude Heiland-Allen wrote:
Compare with the heap profile graph output from this short program which uses a horrible data-dependency hack to force recomputation:
main = do print $ length [(x,y) | x <- [(1 :: Int) .. 10000], y <- [(1 :: Int) .. 10000]] print $ length [(x,y) | x <- [(1 :: Int) .. 10000], y <- [x+1-x .. 10000]]
The heap profile graph looks a little like this:
######## ######## ######## ######## ########_______
(Tested with ghc 6.12.3 -O2 on linux x86_64)
Yup, confirmed with 6.12.3 and 7.0.1 on x86 linux (again behaves differently with -fno-full-laziness). Not only does the second use less memory, it is also faster (something around 10%). Thanks for the nice example.