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