When I change the C++ program into: int n; scanf("%d", &n); for(i=0; i<n;i++) { sum += i; }
GCC need 100 milliseconds on my 3.0GHz new Xeon with loop unrolling enabled. Without loop unrolling GCC needs about 635ms Visual C++ does it in 577 ms, generating the following code: loop: add rbx,rax inc rax cmp rax,rcx jl loop GHC with -O2 -fvia-c (the fastest I could make it) needs 13075 for the naive sum 2100 ms with sum0 2018 ms using the stream-fusion Interesting to see that the stream-fusion was slower when not doing -fvia-c (more than twice as slow with -O) So GHC is about 3 to 4 times slower as Visual C++ / GCC without loop unrolling, which is not too bad since GHC does not perform register optimization and loop unrolling yet no? On Fri, Feb 20, 2009 at 3:44 PM, Achim Schneider <bars...@web.de> wrote: > Bulat Ziganshin <bulat.zigans...@gmail.com> wrote: > > > > execution times: > > sum: > > ghc 6.6.1 -O2 : 12.433 secs > > ghc 6.10.1 -O2 : 12.792 secs > > sum-fast: > > ghc 6.6.1 -O2 : 1.919 secs > > ghc 6.10.1 -O2 : 1.856 secs > > ghc 6.10.1 -O2 -fvia-C : 1.966 secs > > C++: > > gcc 3.4.5 -O3 -funroll-loops: 0.062 secs > > > Nice! Now we know that gcc can calculate faster than Haskell can > calculate and print. Next time, use exitWith, please. > > > -- > (c) this sig last receiving data processing entity. Inspect headers > for copyright history. All rights reserved. Copying, hiring, renting, > performance and/or quoting of this signature prohibited. > > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe