<br><br><div class="gmail_quote">On Thu, Mar 4, 2010 at 11:10 AM, Don Stewart <span dir="ltr">&lt;<a href="mailto:dons@galois.com">dons@galois.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
cjs:<br>
<div class="im">&gt; On 2010-03-01 19:37 +0000 (Mon), Thomas Schilling wrote:<br>
&gt;<br>
&gt; &gt; A possible workaround would be to sprinkle lots of &#39;rnf&#39;s around your<br>
&gt; &gt; code....<br>
&gt;<br>
&gt; As I learned rather to my chagrin on a large project, you generally<br>
&gt; don&#39;t want to do that. I spent a couple of days writing instance<br>
&gt; of NFData and loading up my application with rnfs and then watched<br>
&gt; performance fall into a sinkhole.<br>
&gt;<br>
&gt; I believe that the problem is that rnf traverses the entirety of a large<br>
&gt; data structure even if it&#39;s already strict and doesn&#39;t need traversal.<br>
&gt; My guess is that doing this frequently on data structures (such as Maps)<br>
&gt; of less than tiny size was blowing out my cache.<br>
<br>
</div>And rnf will do the traversal whether it is needed or not.<br>
Imo, it is better  to ensure the structures you want are necessarily<br>
strict by definition, so that only the minimum additional evaluation is<br>
necessary.<br></blockquote><div><br>Isn&#39;t the downside of strict structures the implicit nature of the &#39;strictification&#39;?  You lose the fine grained control of when particular values should be strict.<br><br>
Jason<br></div></div>