
See http://comments.gmane.org/gmane.comp.lang.haskell.libraries/18980 The W part of RWS is bad for performance. Best approach is to implement R, W, and S using a strict StateT. Will
On Jul 14, 2016, at 11:43, Lian Hung Hon
wrote: I faced the same problem in an RWS monad, where adding a print to the evalRWS resolves the space leak. Obviously, it's not very elegant to clutter the output. I tried the unsafeInterleaveIO (works sometimes), seq/deepseq (works on Windows but not on Linux??), strictness annotations (didn't seem to help at all?), but finally settled on using pipes/conduit. It's remarkable how a streaming library is more practical than the language's core feature - laziness.
On 14 July 2016 at 16:32, Matthew Bray
wrote: https://www.schoolofhaskell.com/user/edwardk/snippets/once Cool trick :)
On Thu, 14 Jul 2016 at 08:56 Tom Ellis
wrote: Yes, this is a very neat trick and very effective. (I couldn't acutally find it on Hoogle. Does anyone have a link?) On Thu, Jul 14, 2016 at 07:45:33AM +0000, Robin Palotai wrote:
For deepseq also see the"Once trick". I'm surprised it's not quoted more often. In fact our would make sense to mention it in the deepseq docs.
On Wed, Jul 13, 2016, 21:32 David Feuer
wrote: You have to be careful with deepseq. Using it in the wrong place can lead to very bad performance. It's a big hammer. Its blow can sometimes be softened using the NF type from the nf package, but it's really not the right thing most of the time.
On Tue, Jul 12, 2016 at 11:56 PM, William Yager
wrote: You probably want Control.DeepSeq. No extraneous work doing addition that way either.
Will
On Tue, Jul 12, 2016 at 11:28 PM, Christopher Howard
wrote: > > After pondering this problem some more, I found a solution to the > problem was to introduce strictness, not deep down in the StateReader > monad, but rather at the top level, i.e., forcing evaluation of each > Matrix as soon as it is pulled of the list of Matrices. I found I could > do this simply by summing all the elements in each matrix and printing > the sum to std out. With this approach, i successfully run the full > program and never even saw my memory performance graph move up. > > I suppose there might be a way to do the same thing more efficiently > with seq...? > > On 07/12/2016 06:39 PM, Christopher Howard wrote: > > I guess I was hesitating on posting the entire program source code in an > > cafe email. I suppose I could send you a tarball, if you really wanted > > it... > > > > Matrix is from Data.Matrix > > > > < http://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html>. > > > > It is hard to understand how thunks alone would explain it... there > > would be at most 2000 thunks, right? Unless... Could there be a thunk > > for every single call to getElem? That would be a lot of thunks! > > > > Somebody suggested adding some strictness here... could you elaborate on > > that? I tried inserting seq, but I didn't really understand how I was > > supposed to use it... > > > > -- > http://qlfiles.net > To protect my privacy, please use PGP encryption. It's free and easy > to use! My public key ID is 0x340EA95A (pgp.mit.edu). > > _______________________________________________ > Haskell-Cafe mailing list > To (un)subscribe, modify options or view archives go to: > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe > Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.