Re: a compiled program is slower than byte code

2011-02-15 Thread Simon Marlow

On 09/02/2011 09:25, Kazu Yamamoto (山本和彦) wrote:

Hello,


My stats look very different.

6 RuleFired
 1 ++
 2=#
 1 foldr/app
 1 unpack
 1 unpack-list

Are your libraries compiled with -O2?


I don't know. How can I check?

I just installed ghc-7.0 by perl boot; configure; make; make install.


(sorry, I missed your reply earlier)

The default build settings use -O2 for the libraries, so your build is 
fine.  I don't understand the differences between your 
-ddump-simpl-stats and mine, but I think we have this particular 
performance problem fixed now anyway (I'm right now validating patches 
for the 7.0 branch).


Cheers,
Simon

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: a compiled program is slower than byte code

2011-02-09 Thread Simon Marlow

On 09/02/2011 04:35, Kazu Yamamoto (山本和彦) wrote:

Hello Simon,


$ ghc-nightly2 ./kazu.hs -O2 -fforce-recomp; time ./kazu
[1 of 1] Compiling Main ( kazu.hs, kazu.o )
Linking kazu ...
4.17s real   4.16s user   0.01s system   99% ./kazu


OK. I ran it on 32bit Linux.

6.12.3  runghc   -- 2.22s user 0.40s system 96% cpu 2.724 total
 ghc  -- 1.96s user 0.14s system 97% cpu 2.151 total
 ghc -O   -- 2.18s user 0.10s system 97% cpu 2.333 total
 ghc -O2  -- 2.27s user 0.07s system 97% cpu 2.393 total

ghc-7.0 runghc   -- 3.43s user 0.35s system 97% cpu 3.861 total
 ghc  -- 5.11s user 0.07s system 97% cpu 5.299 total
 ghc -O   -- 5.38s user 0.03s system 97% cpu 5.534 total
 ghc -O2  -- 5.54s user 0.10s system 97% cpu 5.783 total


Thanks, I do see the problem now (I was inadvertently running the 
compiled code with runghc, because I used runghc foo.hs 
-fforce-recomp, which doesn't do what I thought it did).


I created a ticket: http://hackage.haskell.org/trac/ghc/ticket/4951

I think the difference between interpreted and compiled is due to
http://hackage.haskell.org/trac/ghc/ticket/917.  What I'm more worried 
about is the slowdown in pre-7.0.2 relative to other versions.




HEAD is more than twice as fast on this program.  Fusion not working,
perhaps?


Here is the results of ghc -O -ddump-simpl-stats:

ghc-7.0:

19 RuleFired
 6 ++
 2=#
 1 fold/build
 5 foldr/app
 1 foldr/augment
 1 foldr/single
 1 map
 1 unpack
 1 unpack-list

6.12.3:

25 RuleFired
 6 ++
 2=#
 3 fold/build
 6 foldr/app
 1 foldr/augment
 1 map
 2 repeat
 2 take
 1 unpack
 1 unpack-list


My stats look very different.

6 RuleFired
1 ++
2 =#
1 foldr/app
1 unpack
1 unpack-list

Are your libraries compiled with -O2?

Cheers,
Simon

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: a compiled program is slower than byte code

2011-02-09 Thread 山本和彦
Hello,

 My stats look very different.
 
 6 RuleFired
 1 ++
 2 =#
 1 foldr/app
 1 unpack
 1 unpack-list
 
 Are your libraries compiled with -O2?

I don't know. How can I check?

I just installed ghc-7.0 by perl boot; configure; make; make install.

--Kazu

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: a compiled program is slower than byte code

2011-02-08 Thread Simon Marlow


 If I compile the attach code with GHC of the newest ghc-7.0 darcs
 branch, the compiled program is much slower than byte code. This
 phenomenon does not exist in GHC 6.12.3.

 6.12.3  runghc   -- 6.23s user 0.59s system 98% cpu 6.912 total
 ghc  -- 5.72s user 0.70s system 99% cpu 6.422 total
 ghc -O   -- 5.70s user 0.67s system 99% cpu 6.376 total
 ghc -O2  -- 5.69s user 0.67s system 99% cpu 6.373 total

 ghc-7.0 runghc   -- 6.43s user 0.10s system 99% cpu 6.593 total
 ghc  -- 9.20s user 0.09s system 99% cpu 9.302 total
 ghc -O   -- 9.20s user 0.09s system 99% cpu 9.298 total
 ghc -O2  -- 9.38s user 0.09s system 99% cpu 9.478 total

 Is this a bug?

I don't see the same results here (x86_64/Linux).  This is the 7.0 
branch built last night:


$ ghc-stable-nightly2 ./kazu.hs -O2 -fforce-recomp; time ./kazu
[1 of 1] Compiling Main ( kazu.hs, kazu.o )
Linking kazu ...
8.58s real   8.54s user   0.04s system   99% ./kazu
$ time runghc -f ghc-stable-nightly2 ./kazu.hs -O2 -fforce-recomp;
16.92s real   14.21s user   2.70s system   99% runghc -f 
ghc-stable-nightly2 ./kazu.hs -O2 -fforce-recomp


However, there is a fairly large difference between the 7.0 branch and HEAD:

$ ghc-nightly2 ./kazu.hs -O2 -fforce-recomp; time ./kazu
[1 of 1] Compiling Main ( kazu.hs, kazu.o )
Linking kazu ...
4.17s real   4.16s user   0.01s system   99% ./kazu


HEAD is more than twice as fast on this program.  Fusion not working, 
perhaps?


Cheers,
Simon


 My environment is Mac which runs Snow Leopard.

 --Kazu

 
 import System.IO

 n :: Int
 n = 1

 main :: IO ()
 main = withFile /dev/null WriteMode $ \h -
 hPutStr h . foldr1 (++) . replicate n . replicate n $ 'a'
 


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: a compiled program is slower than byte code

2011-02-08 Thread 山本和彦
Hello Simon,

 $ ghc-nightly2 ./kazu.hs -O2 -fforce-recomp; time ./kazu
 [1 of 1] Compiling Main ( kazu.hs, kazu.o )
 Linking kazu ...
 4.17s real   4.16s user   0.01s system   99% ./kazu

OK. I ran it on 32bit Linux.

6.12.3  runghc   -- 2.22s user 0.40s system 96% cpu 2.724 total
ghc  -- 1.96s user 0.14s system 97% cpu 2.151 total
ghc -O   -- 2.18s user 0.10s system 97% cpu 2.333 total
ghc -O2  -- 2.27s user 0.07s system 97% cpu 2.393 total

ghc-7.0 runghc   -- 3.43s user 0.35s system 97% cpu 3.861 total
ghc  -- 5.11s user 0.07s system 97% cpu 5.299 total
ghc -O   -- 5.38s user 0.03s system 97% cpu 5.534 total
ghc -O2  -- 5.54s user 0.10s system 97% cpu 5.783 total

ghc-7.0 is slower than 6.12.3. And if the code is compiled with
ghc-7.0, it is slower than runghc.

 HEAD is more than twice as fast on this program.  Fusion not working,
 perhaps?

Here is the results of ghc -O -ddump-simpl-stats:

ghc-7.0:

19 RuleFired
6 ++
2 =#
1 fold/build
5 foldr/app
1 foldr/augment
1 foldr/single
1 map
1 unpack
1 unpack-list

6.12.3:

25 RuleFired
6 ++
2 =#
3 fold/build
6 foldr/app
1 foldr/augment
1 map
2 repeat
2 take
1 unpack
1 unpack-list

They are exactly the same on Linux and Mac.

--Kazu

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


a compiled program is slower than byte code

2011-02-06 Thread 山本和彦
Hello, 

If I compile the attach code with GHC of the newest ghc-7.0 darcs
branch, the compiled program is much slower than byte code. This
phenomenon does not exist in GHC 6.12.3.

6.12.3  runghc   -- 6.23s user 0.59s system 98% cpu 6.912 total
ghc  -- 5.72s user 0.70s system 99% cpu 6.422 total
ghc -O   -- 5.70s user 0.67s system 99% cpu 6.376 total
ghc -O2  -- 5.69s user 0.67s system 99% cpu 6.373 total

ghc-7.0 runghc   -- 6.43s user 0.10s system 99% cpu 6.593 total
ghc  -- 9.20s user 0.09s system 99% cpu 9.302 total
ghc -O   -- 9.20s user 0.09s system 99% cpu 9.298 total
ghc -O2  -- 9.38s user 0.09s system 99% cpu 9.478 total

Is this a bug?

My environment is Mac which runs Snow Leopard.

--Kazu


import System.IO

n :: Int
n = 1

main :: IO ()
main = withFile /dev/null WriteMode $ \h -
hPutStr h . foldr1 (++) . replicate n . replicate n $ 'a'


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users