I got even more encouraging results on another input - 5 vs 7 seconds:<div><br></div><div>=========== GHC 7.4.0 ==============</div><div><div>jkff@jkff-laptop ~/projects/logs/... $ tplot -if lat.trace -dk &#39;within[.] duration quantile 10 0.25,0.5,0.75,0.9,0.95&#39; -o lat3.png +RTS -s</div>
<div>   2,809,230,872 bytes allocated in the heap</div><div>     358,393,440 bytes copied during GC</div><div>      42,478,364 bytes maximum residency (68 sample(s))</div><div>       1,833,848 bytes maximum slop</div><div>
             113 MB total memory in use (0 MB lost due to fragmentation)</div><div><br></div><div>                                    Tot time (elapsed)  Avg pause  Max pause</div><div>  Gen  0      4740 colls,     0 par    0.39s    0.40s     0.0001s    0.0005s</div>
<div>  Gen  1        68 colls,     0 par    0.42s    0.48s     0.0071s    0.1157s</div><div><br></div><div>  INIT    time    0.00s  (  0.00s elapsed)</div><div>  MUT     time    3.76s  (  4.01s elapsed)</div><div>  GC      time    0.82s  (  0.88s elapsed)</div>
<div>  EXIT    time    0.00s  (  0.00s elapsed)</div><div>  Total   time    4.59s  (  4.89s elapsed)</div><div><br></div><div>  %GC     time      17.8%  (18.0% elapsed)</div><div><br></div><div>  Alloc rate    744,774,183 bytes per MUT second</div>
<div><br></div><div>  Productivity  82.2% of total user, 77.2% of total elapsed</div><div><br></div><div>============ GHC 7.0.4 ===============</div><div>jkff@jkff-laptop ~/projects/logs/... $ tplot -if lat.trace -dk &#39;within[.] duration quantile 10 0.25,0.5,0.75,0.9,0.95&#39; -o lat3.png +RTS -s</div>
<div>tplot -if lat.trace -dk within[.] duration quantile 10 0.25,0.5,0.75,0.9,0.95 -o lat3.png +RTS -s </div><div>   4,024,048,244 bytes allocated in the heap</div><div>     419,997,300 bytes copied during GC</div><div>      44,546,920 bytes maximum residency (70 sample(s))</div>
<div>       1,840,208 bytes maximum slop</div><div>             113 MB total memory in use (0 MB lost due to fragmentation)</div><div><br></div><div>  Generation 0:  6995 collections,     0 parallel,  0.63s,  0.64s elapsed</div>
<div>  Generation 1:    70 collections,     0 parallel,  0.39s,  0.43s elapsed</div><div><br></div><div>  INIT  time    0.01s  (  0.00s elapsed)</div><div>  MUT   time    5.96s  (  6.17s elapsed)</div><div>  GC    time    1.02s  (  1.08s elapsed)</div>
<div>  EXIT  time    0.00s  (  0.00s elapsed)</div><div>  Total time    6.99s  (  7.24s elapsed)</div><div><br></div><div>  %GC time      14.6%  (14.9% elapsed)</div><div><br></div><div>  Alloc rate    674,478,767 bytes per MUT second</div>
<div><br></div><div>  Productivity  85.3% of total user, 82.3% of total elapsed</div><div><br></div><br><div class="gmail_quote">On Wed, Jan 18, 2012 at 8:22 PM, Eugene Kirpichov <span dir="ltr">&lt;<a href="mailto:ekirpichov@gmail.com">ekirpichov@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi cafe,<div><br></div><div>Just wanted to inform you that I&#39;ve been benchmarking my compute-intensive stuff on ghc 7.0.4 vs 7.4.0, and 7.4.0 gave a large speedup - one program that took 2.9s on a particular input is now taking 2.2s. This result is repeatable.</div>

<div><br></div><div>So I encourage people to try out GHC 7.4.0. Some stuff may stop compiling (I had to do 3 basically one-line fixes in 3 packages before I got mine to compile), but I didn&#39;t encounter other problems.</div>

<div><br></div><div>Below is +RTS -s of two runs: one compiled with ghc 7.4.0 and another with 7.0.4.</div><div><br></div><div>I can make a more detailed comparison if it&#39;s useful and if someone tells me how - I thought about including +RTS -p, but Simon Marlow wrote recently that it has started giving meaningful results only in 7.4, so comparison with 7.0.4 would be unfair.</div>

<div><br></div><div>However in this case I&#39;m sure that the program is heavily compute-bound by the following two functions (because it&#39;s always compute-bound by them):</div><div>1) <a href="https://github.com/jkff/timeplot/blob/master/Tools/TimePlot/Plots.hs#L226" target="_blank">https://github.com/jkff/timeplot/blob/master/Tools/TimePlot/Plots.hs#L226</a></div>

<div>2) <a href="https://github.com/jkff/timeplot/blob/master/Tools/TimePlot/Conf.hs" target="_blank">https://github.com/jkff/timeplot/blob/master/Tools/TimePlot/Conf.hs</a> - localToUTC and strptime.</div><div><br></div>
<div><div>jkff@jkff-laptop ~/projects/logs/... $ tplot -if e.trace -dk &#39;within[.] cumsum 10&#39; -o e.png +RTS -s</div>
<div>tplot -if e.trace -dk within[.] cumsum 10 -o e.png +RTS -s </div><div>   2,751,756,296 bytes allocated in the heap</div><div>     135,129,112 bytes copied during GC</div><div>      33,149,720 bytes maximum residency (22 sample(s))</div>

<div>       1,755,868 bytes maximum slop</div><div>              56 MB total memory in use (0 MB lost due to fragmentation)</div><div><br></div><div>  Generation 0:  4994 collections,     0 parallel,  0.22s,  0.23s elapsed</div>

<div>  Generation 1:    22 collections,     0 parallel,  0.08s,  0.09s elapsed</div><div><br></div><div>  INIT  time    0.01s  (  0.00s elapsed)</div><div>  MUT   time    2.61s  (  2.91s elapsed)</div><div>  GC    time    0.30s  (  0.32s elapsed)</div>

<div>  EXIT  time    0.00s  (  0.00s elapsed)</div><div>  Total time    2.91s  (  3.22s elapsed)</div><div><br></div><div>  %GC time      10.1%  (9.8% elapsed)</div><div><br></div><div>  Alloc rate    1,051,262,083 bytes per MUT second</div>

<div><br></div><div>  Productivity  89.6% of total user, 80.9% of total elapsed</div><div><br></div><div>jkff@jkff-laptop ~/projects/logs/... $ tplot -if e.trace -dk &#39;within[.] cumsum 10&#39; -o e.png +RTS -s</div><div>

   2,161,811,620 bytes allocated in the heap</div><div>     107,589,660 bytes copied during GC</div><div>      34,799,400 bytes maximum residency (22 sample(s))</div><div>       1,721,152 bytes maximum slop</div><div>              58 MB total memory in use (0 MB lost due to fragmentation)</div>

<div><br></div><div>                                    Tot time (elapsed)  Avg pause  Max pause</div><div>  Gen  0      3899 colls,     0 par    0.13s    0.14s     0.0000s    0.0003s</div><div>  Gen  1        22 colls,     0 par    0.08s    0.09s     0.0043s    0.0482s</div>

<div><br></div><div>  INIT    time    0.00s  (  0.00s elapsed)</div><div>  MUT     time    2.03s  (  2.28s elapsed)</div><div>  GC      time    0.21s  (  0.23s elapsed)</div><div>  EXIT    time    0.00s  (  0.00s elapsed)</div>

<div>  Total   time    2.26s  (  2.51s elapsed)</div><div><br></div><div>  %GC     time       9.3%  (9.1% elapsed)</div><div><br></div><div>  Alloc rate    1,056,397,390 bytes per MUT second</div><div><br></div><div>  Productivity  90.7% of total user, 81.5% of total elapsed</div>
<span class="HOEnZb"><font color="#888888">
<div><br></div><div><br></div>-- <br>Eugene Kirpichov<br>Principal Engineer, Mirantis Inc. <a href="http://www.mirantis.com/" target="_blank">http://www.mirantis.com/</a><br>Editor, <a href="http://fprog.ru/" target="_blank">http://fprog.ru/</a><br>


</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Eugene Kirpichov<br>Principal Engineer, Mirantis Inc. <a href="http://www.mirantis.com/" target="_blank">http://www.mirantis.com/</a><br>Editor, <a href="http://fprog.ru/" target="_blank">http://fprog.ru/</a><br>

</div>