On Thu, Mar 4, 2010 at 11:10 AM, Don Stewart <d...@galois.com> wrote:

> cjs:
> > On 2010-03-01 19:37 +0000 (Mon), Thomas Schilling wrote:
> >
> > > A possible workaround would be to sprinkle lots of 'rnf's around your
> > > code....
> >
> > As I learned rather to my chagrin on a large project, you generally
> > don't want to do that. I spent a couple of days writing instance
> > of NFData and loading up my application with rnfs and then watched
> > performance fall into a sinkhole.
> >
> > I believe that the problem is that rnf traverses the entirety of a large
> > data structure even if it's already strict and doesn't need traversal.
> > My guess is that doing this frequently on data structures (such as Maps)
> > of less than tiny size was blowing out my cache.
>
> And rnf will do the traversal whether it is needed or not.
> Imo, it is better  to ensure the structures you want are necessarily
> strict by definition, so that only the minimum additional evaluation is
> necessary.
>

Isn't the downside of strict structures the implicit nature of the
'strictification'?  You lose the fine grained control of when particular
values should be strict.

Jason
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to