#1889: Regression in concurrency performance from ghc 6.6 to 6.8
-------------------------------+--------------------------------------------
Reporter: dons | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Runtime System | Version: 6.8.1
Severity: normal | Keywords: threads, concurrency, performance
Difficulty: Unknown | Testcase:
Architecture: Multiple | Os: Multiple
-------------------------------+--------------------------------------------
While most Great Language Shootout benchmarks are running noticeably
(10-20+ %) faster with GHC 6.8.1, benchmarks for concurrency seem to
consistently be running slower, on a variety of architectures.
Attached are some example programs from the shootout where performance has
worsened.
The thread-ring benchmark:
{{{
import Control.Monad
import Control.Concurrent
import System.Environment
ring = 503
new l i = do
r <- newEmptyMVar
forkIO (thread i l r)
return r
thread :: Int -> MVar Int -> MVar Int -> IO ()
thread i l r = go
where go = do
m <- takeMVar l
when (m == 1) (print i)
putMVar r $! m - 1
when (m > 0) go
main = do
a <- newMVar . read . head =<< getArgs
z <- foldM new a [2..ring]
thread 1 z a
}}}
We can benchmark this as follows:
{{{
$ ghc-6.8.1 -O2 threadring.hs -o ghc68 -no-recomp
$ ghc-6.6.1 -O2 threadring.hs -o ghc66 -no-recomp
$ time ./ghc68 30000000 ; time ./ghc66 30000000
75
./ghc68 30000000 4.98s user 0.05s system 100% cpu 5.030 total
75
./ghc66 30000000 4.58s user 0.04s system 99% cpu 4.643 total
}}}
'chameneos' is another that has got slower.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=chameneos&lang=ghc&id=2
{{{
$ time ./ghc66 7000000 ; time ./ghc68 7000000
14000000
./ghc66 7000000 3.36s user 0.05s system 99% cpu 3.425 total
14000000
./ghc68 7000000 3.75s user 0.06s system 99% cpu 3.815 total
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1889>
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