
11 Apr
2011
11 Apr
'11
10:02 a.m.
Serguei Son
Felipe Almeida Lessa
writes: On Mon, Apr 11, 2011 at 10:14 AM, Maciej Marcin Piechotka
wrote: main = mapM (\x -> return $! c_sin_u) [1..n] 0.012 s
This should be
main = mapM (\x -> return $! c_sin_u x) [1..n]
So if I must use a safe function returning IO a, there is no way to improve its performance? To give you a benchmark, calling gsl_ran_ugaussian a million times in pure C takes only a second or two on my system.
Also, please note that I can force the evaluation of c_sin, e.g. mapM (return . c_sin) [1..n] >>= (print $ foldl' (+) 0) And it will still execute reasonably fast.