Ticket #1957 (closed bug: duplicate)
Program that runs slower with optimizations on
Description
This program runs significantly slower with optimization than without.
I need two modules to manifest this bug.
Is this a duplicate of 917/1945? Using -fno-full-laziness does not mitigate the problem.
This seems to be the opposite of 1945. Without optimizations, there is a long delay and then all 10 results print at once. With optimizations, there is a shorter delay between each print statement.
module Main
(main) where
import NaiveFib? import Control.Monad
main :: IO () main = replicateM_ 10 (printFib 37)
module NaiveFib?
(printFib,naiveFib) where
printFib :: Integer -> IO () printFib = print . naiveFib
naiveFib :: Integer -> Integer naiveFib 0 = 0 naiveFib 1 = 1 naiveFib n = naiveFib (n-1) + naiveFib (n-2)
lane@wired:~/test/optimizer-bug$ make main-O0 ghc-6.8.1 -O0 --make Main.hs -o main-O0 [1 of 2] Compiling NaiveFib? ( NaiveFib?.hs, NaiveFib?.o ) [2 of 2] Compiling Main ( Main.hs, Main.o ) Linking main-O0 ... lane@wired:~/test/optimizer-bug$ time ./main-O0 24157817 24157817 24157817 24157817 24157817 24157817 24157817 24157817 24157817 24157817
real 0m34.491s user 0m25.982s sys 0m0.564s
lane@wired:~/test/optimizer-bug$ make main-O2 ghc-6.8.1 -O2 --make Main.hs -o main-O2 [1 of 2] Compiling NaiveFib? ( NaiveFib?.hs, NaiveFib?.o ) [2 of 2] Compiling Main ( Main.hs, Main.o ) Linking main-O2 ... lane@wired:~/test/optimizer-bug$ time ./main-O2 24157817 24157817 24157817 24157817 24157817 24157817 24157817 24157817 24157817 24157817
real 1m50.331s user 1m23.641s sys 0m1.008s
