diff options
Diffstat (limited to 'testsuite/tests/concurrent/prog003/Collate.hs')
-rw-r--r-- | testsuite/tests/concurrent/prog003/Collate.hs | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/testsuite/tests/concurrent/prog003/Collate.hs b/testsuite/tests/concurrent/prog003/Collate.hs deleted file mode 100644 index 2c1879d450..0000000000 --- a/testsuite/tests/concurrent/prog003/Collate.hs +++ /dev/null @@ -1,64 +0,0 @@ -{-# LANGUAGE PatternGuards #-} -module Main (main) where - -import qualified Data.Map as M -import Data.Map (Map) - -import System.Environment -import System.IO -import Text.Regex -import Data.List -import Control.Monad -import Data.Maybe - -type RawResults = Map (String,Int) [Double] - -main = do - [time,speedup] <- getArgs - s <- getContents - let raw = slurp_raw (lines s) - avg = M.map calc_average raw - - let keys = M.keys avg - modes = nub (map fst keys) - cores = sort (nub (map snd keys)) - - h <- openFile time WriteMode - forM modes $ \m -> do - hPutStrLn h (m ++ concatMap (',':) [ show (fromJust (M.lookup (m,n) avg)) - | n <- cores ]) - hClose h - - let - baselines = M.fromList [ (m, fromJust (M.lookup (m,1) avg)) | m <- modes ] - spd = M.mapWithKey (calc_speedup baselines) avg - - h <- openFile speedup WriteMode - forM modes $ \m -> do - hPutStrLn h (m ++ concatMap (',':) [ show (fromJust (M.lookup (m,n) spd)) - | n <- cores ]) - hClose h - -calc_average :: [Double] -> Double -calc_average = foldl f 0 . zip [(1::Int)..] - where f mean (i,x) = mean + (x - mean) / fromIntegral i - -calc_speedup :: Map String Double -> (String,Int) -> Double -> Double -calc_speedup baselines (mode,_) result = base / result - where Just base = M.lookup mode baselines - -slurp_raw :: [String] -> RawResults -slurp_raw lines = add_results ("",1) M.empty lines - where - add_results m results [] = results - add_results m results (line:lines) - | Just [mode,cores] <- matchRegex header line - = add_results (mode, read cores :: Int) results lines - | Just [time] <- matchRegex result line - = let t = read time :: Double in - add_results m (M.insertWith (\_ o -> t:o) m [t] results) lines - | otherwise - = add_results m results lines - -header = mkRegex "run\\.([^\\.]*)\\.N([0-9]*)" -result = mkRegex "time: ([0-9\\.]+)s" |