summaryrefslogtreecommitdiff
path: root/testsuite/tests/concurrent/prog003/Collate.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/concurrent/prog003/Collate.hs')
-rw-r--r--testsuite/tests/concurrent/prog003/Collate.hs64
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"