[ ghc-Bugs-990844 ] conc004.hs mis-optimised (performance weirdness)

SourceForge.net noreply at sourceforge.net
Wed Jul 14 09:06:14 EDT 2004


Bugs item #990844, was opened at 2004-07-14 15:06
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=990844&group_id=8032

Category: Compiler
Group: 6.2.1
Status: Open
Resolution: None
Priority: 5
Submitted By: Remi Turk (remit)
Assigned to: Nobody/Anonymous (nobody)
Summary: conc004.hs mis-optimised (performance weirdness)

Initial Comment:
The following program
(fptools/testsuite/tests/ghc-regress/concurrent/should_run/conc004.hs)
runs about 10 times as slowly when compiled with -O,
both with 6.2.1 and with todays CVS.

% ghc -no-recomp conc004.hs
% time ./a.out
donereal 1.97
user 1.88
sys 0.05

% ghc -no-recomp -O conc004.hs
% time ./a.out                
donereal 21.69
user 20.40
sys 0.12


Strange enough, profiling completely reverses this:

% ghc -no-recomp -prof -auto-all conc004.hs   
% time ./a.out +RTS -p                     
donereal 20.23
user 17.81
sys 0.18

total time  =        2.10 secs   (105 ticks @ 20 ms)
total alloc = 1,116,017,312 bytes  (excludes profiling
overheads)

versus

% ghc -no-recomp -prof -auto-all -O conc004.hs
% time ./a.out +RTS -p
donereal 1.35
user 1.31
sys 0.01

total time  =        0.94 secs   (47 ticks @ 20 ms)
total alloc = 1,060,017,180 bytes  (excludes profiling
overheads)


Which seems pretty weird. Except that multithreaded
programs are well known for weird (timing) problems ;o)


module Main where

-- Test thread creation.
-- (from: Einar Wolfgang Karlsen
<ewk at Informatik.Uni-Bremen.DE>)

import Control.Concurrent

main :: IO ()
main = do
   mvar <- newEmptyMVar

   let 
   	spawner :: (IO () -> IO ThreadId) -> Int -> IO ()
   	spawner c 0 = putMVar mvar ()
   	spawner c n = do { c (spawner c (n-1)); return ()}

   spawner forkIO 1000000
   takeMVar mvar
   putStr "done"

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=108032&aid=990844&group_id=8032



More information about the Glasgow-haskell-bugs mailing list