Your function mainis incorrect. If qsort1it is not an action IO, you cannot execute it in the IO monad. Instead, you can put it in a let binding:
main = do
start <- getCurrentTime
let x = qsort1 (take 1000000 $ randomRs ((1 :: Int), 100000) (mkStdGen 42))
end <- getCurrentTime
print (diffUTCTime end start)
Also note that I explicitly gave a type annotation for 1to avoid some compilation errors.
, - . x , . main, , :
λ> main
0.000001s
, :
main = do
start <- getCurrentTime
let x = qsort1 (take 1000000 $ randomRs ((1 :: Int), 100000) (mkStdGen 42))
print x
end <- getCurrentTime
print (diffUTCTime end start)
BangPatterns qsort1:
main = do
start <- getCurrentTime
let !x = qsort1 (take 1000000 $ randomRs ((1 :: Int), 100000) (mkStdGen 42))
end <- getCurrentTime
print (diffUTCTime end start)
BangPatterns , @kosmikus. criterion, benchnmarking.