2010/9/12 Andrew Coppin <[email protected]>: > Vo Minh Thu wrote: >> >> Hi, >> >> I would like to benchmark C/C++ and Haskell code. The goal is to >> improve the Haskell port[0] of smallpt[1]. >> >> To make sure my approach was reliable, I got the code of two programs >> (one in C, the other in Haskell) from a post[2] by Don. The code is >> reproduced below. When timing the execution of both program, I have a >> >>> >>> 4x difference. It is said on the blog the programs should have >>> >> >> similar performance. >> >> I simply don't get the reason of such a difference. I've tried the >> code on my Atom netbook and also on an older centrino machine. The >> timing are similar (i.e. the C and Haskell program show >4x >> difference). Both machines have GHC 6.12.1 on Linux. >> >> Would you have an idea? >> > > The function floor :: Double -> Int is surprisingly slow under GHC. (IIRC, > it's implemented by converting Double -> (Int, Integer) -> Int, or something > equally absurd.) Poking around GHC.Prim directly allows you to do the same > operation much, much faster. I couldn't say exactly how much of a difference > it makes, but I've had programs go from seconds to microseconds just by > switching this. > > http://hackage.haskell.org/trac/ghc/ticket/2271 > http://hackage.haskell.org/trac/ghc/ticket/1434 > > My solution was to do this: > > http://hackage.haskell.org/packages/archive/AC-Colour/1.1.3/doc/html/src/Data-Colour-FastFloor.html > > Uh... good luck! o_O
Thanks for the tip. But I would really get the two little programs from Don's blog to have the same performance as advertised so that I can build from there. I have to make sure things are different for a good reason, not because of a flaw in my setup (which I assume it is since I can't even get those two to run in the same time). Thanks, Thu _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
