
---- Test.hs ---- import Prelude hiding (sum, enumFromTo) import Data.List.Stream (sum, unfoldr) enumFromTo m n = unfoldr f m where f k | k <= n = Just (k,k+1) | otherwise = Nothing main = print . sum $ enumFromTo 1 (10^9 :: Int) ---- snip ---- dolio@zeke % time ./Test 500000000500000000 ./Test 3.12s user 0.03s system 80% cpu 3.922 total dolio@zeke % time ./Test-sum0 500000000500000000 ./Test-sum0 3.47s user 0.02s system 80% cpu 4.348 total dolio@zeke % time ./Test-sum0 500000000500000000 ./Test-sum0 3.60s user 0.02s system 90% cpu 4.009 total dolio@zeke % time ./Test 500000000500000000 ./Test 3.11s user 0.02s system 81% cpu 3.846 total ---- snip ---- "Test-sum0" is with the sum0 function "Test" is the code at the top of this mail. -fvia-c -optc-O3 didn't seem to make a big difference with either Haskell example, so they're both with the default backend. Your C++ code runs slowly on my system (around 1 second), but that's because it uses 32-bit ints, I guess (switching to long int sped it up). -- Dan