[Haskell-cafe] possible memory leak in uvector 0.1.0.3
Manlio Perillo
manlio_perillo at libero.it
Tue Mar 3 10:00:55 EST 2009
Daniel Fischer ha scritto:
> Am Dienstag, 3. März 2009 15:35 schrieb Manlio Perillo:
>> Claus Reinke ha scritto:
>>>>> At first guess it sounds like you're holding onto too much, if not the
>>>>> whole stream perhaps bits within each chunk.
>>>> It is possible.
>>>>
>>>> I split the string in lines, then map some functions on each line to
>>>> parse the data, and finally calling toU, for converting to an UArr.
>>> Just to make sure (code fragments or, better, reduced examples
>>> would make it easier to see what the discussion is about): are you
>>> forcing the UArr to be constructed before putting it into the Map?
>> parse handle =
>> contents <- S.hGetContents handle
>> let v = map singleton' $ ratings contents
>> let m = foldl1' (unionWith appendU) v
>> v `seq` return $! m
>
> The (v `seq` ) is completely useless.
> Maybe
> (size m) `seq` return m
> would help?
>
In one of my tests I did:
rnf v `seq` rnf m `seq` return m
Memory usage was the same
-- XXX these are missing from uvector package
instance (NFData a, NFData b) => NFData (a :*: b) where
-- NOTE: (:*:) is already strict
rnf (a :*: b) = a `seq` b `seq` ()
instance NFData a => NFData (UArr a) where
-- NOTE: UArr is already strict
rnf array = array `seq` ()
Regards Manlio
More information about the Haskell-Cafe
mailing list