3 ms·
That was the case in 2009. GHC 7.8.3 is doing better now for regular Haskell code in the loop. main :: IO () main = do let go :: Double -> Double
by enigmo 12y ago
That was the case in 2009. GHC 7.8.3 is doing better now for regular Haskell code in the loop.
main :: IO ()
main = do
let go :: Double -> Double -> Double
go !i !s
| i < 100000000 = go (i+1) (s + 1/i)
| otherwise = s
printf "Almost infinity is %g\n" (go 1 0)
Inner loop assembly:
LBB0_4: ## %c3Sk
movaps %xmm3, %xmm0
divsd %xmm1, %xmm0
addsd %xmm3, %xmm1
ucomisd %xmm1, %xmm4
addsd %xmm2, %xmm0
movaps %xmm0, %xmm2
ja LBB0_4
jmp LBB0_2