#830: Compiler performance bug: large "do" expression
-------------------------+--------------------------------------------------
Reporter: simonmar | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.4.2
Severity: normal | Keywords:
Os: Unknown | Difficulty: Unknown
Architecture: Unknown |
-------------------------+--------------------------------------------------
From Neil Mitchell:
Using GHC 6.4.2 on Windows and 6.4.1 on Linux, I get really poor
compile time performance for large do blocks - for example:
{{{
main = do
return ()
return ()
....
return ()
}}}
The following are the compile times in seconds for a given number of
return () lines, GHC 6.4.1 on Linux, with a very beefy processor (my
department server) and loads of RAM.
{{{
100 1.444
200 4.054
300 7.977
400 13.967
500 21.265
600 30.71
700 43.997
}}}
For comparison on my desktop machine I get out of heap space with
268Mb of heap, in a few minutes for 700. Compared to Hugs and Yhc,
which both deal with all of these files instantly.
By splitting the 700 line do block into 7 separate do blocks, each 100
lines, I get a compile time of 8.530.
The particular reason I was running into this issue was with an auto
generated file of tests, about 360 lines of reasonably lines in a do
block, which exhausted the memory in GHCi. I have modified my test
generator to split the files into 50 line blocks.
Thanks
Neil
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/830>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs