haskell, win32: out of memory
От: trop Россия  
Дата: 01.06.10 07:26
Оценка:
программа работает нормально с небольшими файлами,
но завершается с out of memory на файле в 60Мб ->
согласно task manager: в первые 20 сек сжирает всю свободную память ~1,5 Гб,
затем начинает высвобождать до ~30-60 Мб, и через 5 мин завершается с ошибкой.

как исправить такое поведение?

собирается так: ghc --make md5.hs
import qualified Data.Digest.MD5 as MD5
import qualified Data.ByteString.Lazy as B
import Text.Printf
import System.Environment
                          
main = do
  (fname:_) <- getArgs
  bs <- B.readFile fname
  md5 <- hash_MD5 bs
  mapM_ (printf "%02x") md5 
  return ()
  
hash_MD5 :: B.ByteString -> IO [Int]
hash_MD5 bs = do
  let octs = MD5.hash $ map fromIntegral $ B.unpack bs
  return $ map fromIntegral octs
-
Re: haskell, win32: out of memory
От: the_void Швейцария  
Дата: 01.06.10 11:47
Оценка:
Здравствуйте, trop, Вы писали:

T>как исправить такое поведение?


Взять библиотеку, работающую с ByteString напрямую?

import Data.Digest.Pure.MD5
import qualified Data.ByteString.Lazy as B
import System.Environment

main = do
    fname:_ <- getArgs
    B.readFile fname >>= print . md5
Re[2]: haskell, win32: out of memory
От: trop Россия  
Дата: 01.06.10 13:12
Оценка:
Здравствуйте, the_void, Вы писали:
_>Взять библиотеку, работающую с ByteString напрямую?
_>
_>import Data.Digest.Pure.MD5
...
_>

круто

спасибо! работает очень быстро.
-
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.