On 12 Jan 2008, at 7:19 AM, Andre Nathan wrote:
On Fri, 2008-01-11 at 19:14 -0800, Jonathan Cast wrote:
These are all known and expected. As I said, you can expect lazy
versions to normally be slower than explicit loops. The question is
whether 50% more time and 300% more memory has a higher cost in your
case than the extra complexity and reduced modularity of the lazy
code.
I think I understand... I expected the getDirectoryContents + mapM_ to
have about the same memory usage of the readDirStream version, because
getDirectoryContents would lazily give me one entry at a time, but the
list of entries returned by it ends up being created anyway,
A nit: the list is almost certainly getting created lazily, or you'd
get more than 300% more memory usage. But you still get the list's
cons cells as your bookkeeping baggage, and they take up space in
exchange for greater flexibility.
hence the
larger memory usage, as the readDirStream version never builds a list.
jcc
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe