module Main where
import Control.Parallel(par,pseq)
import Text.Printf
import Control.Exception
import System.CPUTime
import Data.List
import IO
import Data.Char
import Control.DeepSeq
time :: IO t -> IO t
time a = do
start <- getCPUTime
v <- a
end <- getCPUTime
let diff = (fromIntegral (end - start))/(10^12)
printf "Computation time: %0.3f sec\n" (diff :: Double)
return v
learquivo :: FilePath -> IO ([[Int]])
learquivo s = do
content <- readFile s
return (read content)
main :: IO()
main = do
t5 <- getCPUTime
content <- learquivo "mkList1.txt"
let !mapasort = rnf $ map sort content
t6 <- getCPUTime
let diffft6t5 = (fromIntegral (t6 - t5))/(10^12)
printf "Computation time Mapasort: %0.3f sec\n" (diffft6t5 :: Double)
Как определить, оценивает ли он все элементы контента?как заставить оценить это выражение?
let !mapasort = rnf $ map sort content
Я использовал линию в winghci:
*Main> let !mapasort = rnf $ map sort content
Но, вернулся:
*Main> mapasort()
Благодаря
Примечание Я установил свой отправил код, чтобы он на самом деле работает. Убедитесь, что он отражает код, который вы запускали. –
Существует пакет доступных для взлома для синхронизации ввода-вывода. Он называется System.TimeIt и работает так же, как функция времени, которую вы указали –
Спасибо, Jonno_FTW, я заменил в своей программе. – Gmp