How to test for efficiency in Haskell
To do so, you can use the :set +s
command in GHCi.
ghci> :set +s
You won't see any success message. Now you can test it:
ghci> let filterPrime (p:xs) = p : filterPrime [x | x <- xs, x `mod` p /= 0]
ghci> primes = filterPrime [2..]
ghci> :set +s
ghci> take 10 primes
[2,3,5,7,11,13,17,19,23,29]
(0.01 secs, 514,216 bytes)
When you're tracking the time of fast evaluations like the one above, you should evaluate the expression a couple of times and take the mean of all time values. Sometimes GHCi needs a bit time to power up, that's why an evalutation could take longer the first time.
This method works also with functions you've defined in an own .hs-file. You can remove the time evaluation by using :unset +s
.
Tip: If you're interested in prime number algorithms, check out the Sieve of Eratosthenes.