module Main where
|
|
|
|
import System.Environment
|
|
|
|
|
|
import ThreadPoolTimed
|
|
import ThreadPoolTimed2
|
|
|
|
initialVector :: [Int]
|
|
initialVector = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
|
|
|
|
main :: IO ()
|
|
main = do args <- getArgs
|
|
let sec = read (args !! 0) :: Int
|
|
let rep = read (args !! 1) :: Int
|
|
let cores = read (args !! 2) :: Int
|
|
let evalf = (applyNtimes rep applyFun)
|
|
putStrLn "\n\n"
|
|
|
|
res2 <- threadPoolTimed cores sec evalf initialVector
|
|
putStrLn $ "ThreadPool result: " ++ (show $ sum res2) ++ " \n"
|
|
|
|
res1 <- threadPoolTimed2 sec evalf initialVector
|
|
putStrLn $ "ThreadPool2 result: " ++ (show $ sum res1) ++ " \n"
|
|
|
|
|
|
--res3 <- parallelizedTimed2 sec evalf initialVector
|
|
--putStrLn $ "ParMap result: " ++ (show $ sum res3) ++ " \n"
|
|
|
|
|
|
|
|
|
|
|
|
applyNtimes :: Int -> (a -> a) -> a -> a
|
|
applyNtimes 0 _ accum = accum
|
|
applyNtimes n f accum = applyNtimes (n - 1) f (f accum)
|
|
|
|
applyFun :: Int -> Int
|
|
applyFun x = x + 1
|