
On Monday 11 October 2010 04:44:24, Antoine Latter wrote:
I have results from my Intel-based MacBook, 64-bits, GHC 7 rc.
Results from ncgFloat:
Relations for properFraction: Prelude 1.000000 C via Integer 0.333999 Hs via Integer 0.499852 C Int 4.417461 Hs Int 4.558648
Puzzle solved. I have run the benchmarks with the latest HEAD and got broadly similar results. GHC's new code generator does some incredible stuff with the code for Float's RealFrac instance, properFraction has become about _seven times_ faster, floor and ceiling about _thirteen times_ and round about _10.5 times_ (values for my box, the exact numbers will differ, but the tendency will be the same). Just Wow! My code for properFraction :: Float -> (Integer, Float) has become 1.7 times slower when calling out to C, everything else has either changed hardly at all or become slightly faster (5-10%). The overall result is that for Float, in the general case, the current implementation is faster and overall the speedups are less impressive than they were for 6.12. So I'll have to re-learn what GHC does with which kind of code. Cheers, Daniel