Hi all,<div><br></div><div>I haven't had much time to do performance tzar work yet, but I did run nofib on the last few GHC releases to see the current trend. The benchmarks where run on my 64-bit Core i7-3770 @ 3.40GHz Linux machine. Here are the results:</div>
<div><br></div><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">7.0.4 to 7.4.2:<div class="im" style="color:rgb(80,0,80)"><div><br></div><div><span style="color:rgb(34,34,34);font-family:'courier new',monospace">------------------------------</span><span style="color:rgb(34,34,34);font-family:'courier new',monospace">------------------------------</span><span style="color:rgb(34,34,34);font-family:'courier new',monospace">--------------------</span><br style="color:rgb(34,34,34);font-family:'courier new',monospace">
<span style="color:rgb(34,34,34);font-family:'courier new',monospace"> Program Size Allocs Runtime Elapsed TotalMem</span></div></div><div><div><font face="courier new, monospace">--------------------------------------------------------------------------------</font></div>
<div><font face="courier new, monospace"> Min -1.6% -57.3% -39.1% -36.4% -25.0%</font></div><div><font face="courier new, monospace"> Max +21.5% +121.5% +24.5% +25.4% +300.0%</font></div>
<div><font face="courier new, monospace"> Geometric Mean +8.5% -0.7% -7.1% -5.2% +2.0%</font></div></div></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px"><font face="courier new, monospace"><br>
</font></div><div><font color="#222222" face="arial, sans-serif">The big loser here in terms of runtime is "kahan", which I added to test tight loops involving unboxed arrays and floating point arithmetic. I believe there was a regression in fromIntegral RULES during this release, which meant that some conversions between fixed-width types went via Integer, causing unnecessary allocation.</font></div>
</div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">7.4.2 to 7.6.1:</span></div><div><br></div><div><font face="courier new, monospace" style="color:rgb(34,34,34);font-size:13px;background-color:rgb(255,255,255)">--------------------------------------------------------------------------------<br>
Program Size Allocs Runtime Elapsed TotalMem<br>--------------------------------------------------------------------------------<br> Min -5.1% -23.8% -11.8% -12.9% -50.0%<br>
Max +5.3% +225.5% +7.2% +8.8% +200.0%<br> Geometric Mean -0.4% +2.1% +0.3% +0.2% +0.7%</font><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">The biggest loser here in terms of runtime is "integrate". I haven't looked into why yet.</span><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">7.6.1 to 7.6.2:</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><span style="font-family:'courier new',monospace">--------------------------------------------------------------------------------</span><br style="font-family:'courier new',monospace">
<span style="font-family:'courier new',monospace"> Program Size Allocs Runtime Elapsed TotalMem</span><br style="font-family:'courier new',monospace"><div><font face="courier new, monospace">--------------------------------------------------------------------------------</font></div>
<div><font face="courier new, monospace"> Min -2.9% +0.0% -4.8% -4.4% -1.9%</font></div><div><font face="courier new, monospace"> Max +0.0% +1.0% +4.5% +6.4% +20.8%</font></div>
<div><font face="courier new, monospace"> Geometric Mean -1.7% +0.0% +0.1% +0.3% +0.2%</font></div><div><br></div><div>I have two takeaways:</div><div><br></div><div> * It's worthwhile running nofib before releases as it does find some programs that regressed.</div>
<div> * There are some other regressions out there (i.e. in code on Hackage) that aren't reflected here, suggesting that we need to add more programs to nofib.</div><div><br></div><div>Cheers,</div><div>Johan</div><div>
<br></div></div></div>