Program1:

module Main where

import Data.Binary
import Data.List(foldl')


main = do
  let sum' = foldl' (+) 0
  let list::[Int] = decode $ encode $ ([1..] :: [Int])
  print $ sum' list
  print "done"

vs

Program2:

module Main where

import Data.Binary
import Data.List(foldl')


main = do
  let sum' = foldl' (+) 0
  let list::[Int] = [1..]
  print $ sum' list
  print "done"

neither program is expected to terminate.  The point of these examples
is to demonstrate that Data.Binary encode and decode have some strange
memory allocation patters.

If you run Program1, it will run forever, but its memory usage on my
machine goes to 500M then back down to 17M then back up to 500M then
back down to 17M... repeatedly.  I don't think this has anything to do
with running out of space in a 32 bit integer.

Program2 on the other hand runs at constant memory at around 2M.

Anatoly

On 10/2/07, Anatoly Yakovenko <[EMAIL PROTECTED]> wrote:
> i am getting some weird memory usage out of this program:
>
>
> module Main where
>
> import Data.Binary
> import Data.List(foldl')
>
>
> main = do
>    let sum' = foldl' (+) 0
>    let list::[Int] = decode $ encode $ ([1..] :: [Int])
>    print $ sum' list
>    print "done"
>
> it goes up to 500M and down to 17M on windows.  Its build with ghc
> 6.6.1 with the latest data.binary
>
> Any ideas what could be causing the memory usage to jump around so much?
>
>
> Thanks,
> Anatoly
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to