
Hi, I noticed ghc (version 4.08.1) floating point performance is really slow on my computer: a 270Mhz sun ultra5. The program below does 1 milion floating point multiplications and takes 2 seconds to run. I made a profile and it says most of the time (93%) is spent in the function bar. Any idea what is going on ? Regards, Jan module Main where foo :: Double -> [Double] foo 0 = [1] foo n = bar n:foo (n-1) bar :: Double -> Double bar n = n*1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 *1*1*1*1*1*1*1*1*1*1 foldl' :: (a -> b -> a) -> a -> [b] -> a foldl' _ a [] = a foldl' f a (x:xs) = (foldl' f $! f a x) xs main :: IO() main = putStrLn (show (foldl' (+) 0 (foo 10000))) --------------------------- Profile: total time = 2.60 secs (130 ticks @ 20 ms) total alloc = 24,845,828 bytes (excludes profiling overheads) COST CENTRE MODULE %time %alloc bar Main 93.1 96.1 foo Main 3.1 2.4 foldl' Main 3.1 1.4 individual inherited COST CENTRE MODULE entries %time %alloc %time %alloc MAIN MAIN 0 0.0 0.0 100.0 100.0 main Main 0 0.0 0.0 0.0 0.0 CAF PrelShow 1 0.0 0.0 0.0 0.0 CAF PrelFloat 3 0.0 0.0 0.0 0.0 CAF PrelHandle 3 0.0 0.0 0.0 0.0 CAF Main 9 0.0 0.0 100.0 100.0 main Main 1 0.8 0.0 100.0 100.0 foo Main 10001 3.1 2.4 96.2 98.5 bar Main 10000 93.1 96.1 93.1 96.1 foldl' Main 10002 3.1 1.4 3.1 1.4

Fri, 26 Jan 2001 17:40:17 +0100, Jan Kort
I made a profile and it says most of the time (93%) is spent in the function bar.
Did you compile with optimization turned on (option -O)? I see similar results without -O but quite different with -O. -- __("< Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.ids.net.pl/ \__/ ^^ SYGNATURA ZASTÊPCZA QRCZAK
participants (2)
-
Jan Kort
-
qrczak@knm.org.pl