
Hi, I have a Word64 -> Bool function called only012 that returns True iff the digits in base 10 are 0, 1 or 2. I wand to make sure that I'm competitive with C, so I wrote the following code: Haskell version: http://lpaste.net/100129 C version: http://lpaste.net/100128 $ ghc --make -O3 303only012.hs && time ./303only012 50000000 > /dev/null ./303only012 50000000 > /dev/null 21.44s user 0.41s system 91% cpu 23.754 total $ g++ -O3 303only012.cpp -o 303cpponly012 && time ./303cpponly012 50000000
/dev/null ./303cpponly012 50000000 > /dev/null 13.87s user 0.03s system 95% cpu 14.577 total
So there's a difference, but I'm not sure if it's related to my algorithm or related to IO/RTS. The core output of only012 looks quite tight: http://lpaste.net/100130 Am I doing the IO part right, that is fast IO that is not screwing my benckmark? I'm not so sure about that since I use a convoluted way to print the boolean result in Haskell. Cheers, -- Cp