On a G4:
s.hs (which does not need bang patterns) is:
main = seq (sum0 (10^9) 0) (return ())
sum0 :: Int -> Int -> Int
sum0 0 acc = acc
sum0 x acc = sum0 (x-1) $! (acc+x)
And s.c is (actually including 10^9, which Bulat's did not):
main()
{
int sum=0;
for(int i=1000*1000*1000; i>0; i--)
sum += i;
}
I compiled them with
ghc --make -O2 s.hs -o shs
gcc -o sc -std=c99 -O3 -funroll-loops s.c
And timed them:
$ time ./shs
real 0m3.309s
user 0m3.008s
sys 0m0.026s
$ time ./sc
real 0m0.411s
user 0m0.316s
sys 0m0.006s
So C is 9.4 times faster.
And via-C did not help:
$ ghc -fvia-C -optc "-O3 -funroll-loops" --make -O2 s.hs -o shs-via-C
$ time ./shs-via-C
real 0m7.051s
user 0m3.010s
sys 0m0.050s
--
Chris
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe