logo       

[GHC] #830: Compiler performance bug: large "do" expression: msg#00063

lang.haskell.glasgow.bugs

Subject: [GHC] #830: Compiler performance bug: large "do" expression

#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@xxxxxxxxxxx
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise