LINUX.ORG.RU

История изменений

Исправление czan, (текущая версия) :

Таки хаскель недостаточно быстр для данной задачи. Пытался сделать с помощью UArray. Но производительность хромает.

import Data.Array.Unboxed
import Data.Array.ST
import Control.Monad
import Control.Monad.ST

memoArray :: UArray (Int,Int) Int
memoArray = array ((0,1),(999,5000))
            [((i,j),(-1)) | i <- [0..999], j <- [1..5000]]

main = do
  print (memoArray ! (999,5000))
Здесь создаётся массив размерами 1000 на 5000, инициализируется значением -1 и печатается значение из массива по координатам 999 и 5000. На это дело на моём компьютере уходит три с лишним секунды:
time ./uArray
-1

real	0m3,399s
user	0m3,268s
sys	0m0,105s
Возможно есть способы ускорить, но я не нашёл.

Исходная версия czan, :

Таки хаскель недостаточно быстр для данной задачи. Пытался сделать с помощью UArray. Но производительность хромает.

import Data.Array.Unboxed
import Data.Array.ST
import Control.Monad
import Control.Monad.ST

memoArray :: UArray (Int,Int) Int
memoArray = array ((0,1),(999,5000))
            [((i,j),(-1)) | i <- [0..999], j <- [1..5000]]

main = do
  print (memoArray ! (999,5000))
Здесь создаётся массив размерами 1000 на 5001, инициализируется значением -1 и печатается значение из массива по координатам 999 и 5000. На это дело на моём компьютере уходит три с лишним секунды:
time ./uArray
-1

real	0m3,399s
user	0m3,268s
sys	0m0,105s
Возможно есть способы ускорить, но я не нашёл.