[Haskell-beginners] Execution time of Mergesort

KC kc1956 at gmail.com
Fri Jul 6 02:06:10 UTC 2018


I haven't looked at the code much yet
But might want to consider strictness 😎

--
Sent from an expensive device which will be obsolete in a few months
Casey

On Thu, Jul 5, 2018, 7:01 PM Awsaf Rahman, <awsafrahman1704 at gmail.com>
wrote:

> Hello everyone!
>
> I am trying to find out the execution time of mergesort for a list size of
> 1 million integers. I have done the same in Erlang as well and the
> execution time in Erlang was around 0.93 seconds. I have implemented the
> program in almost the same way in Haskell as well but for some reason the
> Haskell implementation is taking around 12 seconds which doesn't seem
> right.
>
> Here is the implementation in Haskell:
>
> *{-# LANGUAGE OverloadedStrings #-}*
> *{-# LANGUAGE BangPatterns #-}*
> *import Control.Exception*
> *import Formatting*
> *import Formatting.Clock*
> *import System.Clock*
> *import Control.DeepSeq*
>
> *mergesort [] = []*
> *mergesort [x] = [x]*
> *mergesort xs = let (lhalf, rhalf) = splitAt (length xs `div` 2) xs*
> *               in merge' (mergesort lhalf) (mergesort rhalf)*
>
> *merge' lhalf rhalf = merge lhalf rhalf []*
>
> *merge [] [] acc = reverse acc*
> *merge [] y acc = reverse acc ++ y*
> *merge x [] acc = reverse acc ++ x*
>
> *merge (l:ls) (r:rs) acc*
> *        | l < r = merge ls (r:rs) (l:acc)*
> *        | otherwise = merge rs (l:ls) (r:acc)*
>
> *toList :: String -> [Integer]*
> *toList input = read ("[" ++ input ++ "]")*
>
> *main = do*
> *    file <- getLine*
> *    contents <- readFile file*
> *    let !unsortedlist = (toList contents)*
> *    start <- getTime Monotonic*
> *    evaluate(force (mergesort unsortedlist))*
> *    end <- getTime Monotonic*
> *    fprint (timeSpecs % "\n") start end*
>
>
> What am I doing wrong?
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20180705/6eef1232/attachment.html>


More information about the Beginners mailing list