Простая программка. Считает влоб (совсем влоб) x^(x*x) mod 1000 для списка чисел
import Data.List
import Control.Parallel
import Control.Parallel.Strategies
proc :: Int -> Int
proc x = foldl' f 1 [1..x*x]
where f z l = (z*x) `mod` 1000
xs = [1..1000]
main = print (parMap rwhnf proc xs)
Пробовал запускать с разными параметрами в духе:
./main +RTS -N1 -RTS
./main +RTS -N2 -RTS
./main +RTS -N2 -g2 -RTS
Машина с двумя ядрами, но в среднем, чем больше указываю N, тем пропорционально медленнее работает (быстрее всего -N1)
top показывает, что вроде бы работают оба ядра.
Подскажите пожалуйста, в чем может быть проблема?
ЗЫ компилирую с помощью ghc 6.10.1:
ghc --make main.hs -O2 -threaded
Ответ на:
комментарий
от Miguel
Ответ на:
комментарий
от Miguel
Ответ на:
комментарий
от Miguel
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.