#1984: weird performance drop with -O2 on x86
-------------------------+--------------------------------------------------
    Reporter:  guest     |       Owner:       
        Type:  bug       |      Status:  new  
    Priority:  normal    |   Milestone:       
   Component:  Compiler  |     Version:  6.8.2
    Severity:  normal    |    Keywords:       
  Difficulty:  Unknown   |    Testcase:       
Architecture:  x86       |          Os:  Linux
-------------------------+--------------------------------------------------
 Here's my program:
 {{{
 import Control.Concurrent
 import Data.IORef

 maker :: IORef Int -> IO ()
 maker v = loop
     where
     loop = do
         x <- readIORef v
         writeIORef v $! x + 1
         forkIO (return ())
         loop

 main :: IO ()
 main = do
     v <- newIORef 0
     t <- forkIO (maker v)
     threadDelay 1000000
     killThread t
     x <- readIORef v
     print x
 }}}

 It's supposed to print the number of threads created in one second. With
 ghc -O2, I get around 61104; similarly for -O1. However, with no
 optimization I get results around 612274, i.e. approximately ten times
 more threads in the same time.
 What's going on here?

 More data points:

 6.6.1 behaves similarly but the numbers are a bit higher (~10% more
 iterations).

 <dons> be sure to mention that results appear normal on amd64.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1984>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to