<div dir="ltr"><div>This is a simplified version of an issue I'm running into when timing some functions.</div><div><br></div><div>In this example, the first putStr inside the replicateM_ takes far longer than subsequent putStrs. If I add in a putStr at the top (the commented line), each iteration takes the same. (Though I presume I just shifted the long execution to the putStr on top).</div><div><br></div><div>The same thing happens on the first iterations of a function when I need to evaluate some state, or deepseq some value. putStr was just a simpler version that still showed the same issue.</div><div><br></div><div>Relevant code: <a href="http://lpaste.net/136250">http://lpaste.net/136250</a><br></div><div><br></div><div>What's going on here?</div><div><br></div><div>Thanks!</div><div><br></div><div><pre style="margin-top:0px;margin-bottom:0px"><span class=""><font color="#000000">import</font></span><font color="#000000"> <span class="">Control</span><span class="">.</span><span class="">Monad</span>
<span class="">import</span> <span class="">Data</span><span class="">.</span><span class="">Time</span><span class="">.</span><span class="">Clock</span>

<span class="">main</span> <span class="">::</span> <span class="">IO</span> <span class="">()</span>
<span class="">main</span> <span class="">=</span> <span class="">do</span>
    <span class="">-- putStr ""</span>
    <span class="">replicateM_</span> <span class="">5</span> <span class="">$</span> <span class="">do</span>
        <span class="">t1</span> <span class=""><-</span> <span class="">getCurrentTime</span>
        <span class="">putStr</span> <span class="">""</span>
        <span class="">t2</span> <span class=""><-</span> <span class="">getCurrentTime</span>
        <span class="">print</span> <span class="">.</span> <span class="">round</span> <span class="">$</span> <span class="">1000</span> <span class="">*</span> <span class="">1000</span> <span class="">*</span> <span class="">diffUTCTime</span> <span class="">t2</span> <span class="">t1</span>

<span class="">{-
Sample output:
49
1
1
1
2
-}</span></font></pre></div></div>