Performance regression in 7.4.1 compared to 6.12.3
Unless I'm doing something really stupid, there seems to be a significant slowdown for some programs between versions 6 and 7.
The bottom line is that the attached program runs in 6.79 sec. with 7.4.1 versus 4.72 sec. in 6.12.3. The script is meant to reproduce the problem in any x86 or x86_64 machine running linux.
The test machine was an Intel Xeon E7340 2.40GHz, 4x4 cores, GNU/Linux 2.6.32-5 (x86_64), but it can be reproduced in other machines too (i386) with similar results.
Checking GHC versions
The Glorious Glasgow Haskell Compilation System, version 6.12.3
The Glorious Glasgow Haskell Compilation System, version 7.4.1
Compiling with GHC 6.12.3
/var/tmp/nickie/ghc-bench/usr/bin/ghc-6.12.3 -o ntak6 --make ntak.hs -O2 -optc-O3
[1 of 1] Compiling Main ( ntak.hs, ntak.o )
Linking ntak6 ...
Compiling with GHC 7.4.1
/var/tmp/nickie/ghc-bench/usr/bin/ghc-7.4.1 -o ntak7 --make ntak.hs -O2 -optc-O3 -rtsopts=all
[1 of 1] Compiling Main ( ntak.hs, ntak.o )
Linking ntak7 ...
Running with GHC 6.12.3
./ntak6 +RTS -sstderr
9, hs time = 4.748408 sec
4,738,681,488 bytes allocated in the heap
11,586,848 bytes copied during GC
33,456 bytes maximum residency (1 sample(s))
321,592 bytes maximum slop
2 MB total memory in use (0 MB lost due to fragmentation)
Generation 0: 9038 collections, 0 parallel, 0.06s, 0.07s elapsed
Generation 1: 1 collections, 0 parallel, 0.00s, 0.00s elapsed
INIT time 0.00s ( 0.00s elapsed)
MUT time 4.66s ( 4.68s elapsed)
GC time 0.06s ( 0.07s elapsed)
EXIT time 0.00s ( 0.00s elapsed)
Total time 4.73s ( 4.75s elapsed)
%GC time 1.3% (1.5% elapsed)
Alloc rate 1,015,078,645 bytes per MUT second
Productivity 98.6% of total user, 98.2% of total elapsed
4.72 user 0.02 system 0:04.75 elapsed
Running with GHC 7.4.1
9, hs time = 6.82757 sec
5,529,772,976 bytes allocated in the heap
13,357,408 bytes copied during GC
62,904 bytes maximum residency (2 sample(s))
23,080 bytes maximum slop
2 MB total memory in use (0 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 10583 colls, 0 par 0.07s 0.08s 0.0000s 0.0000s
Gen 1 2 colls, 0 par 0.00s 0.00s 0.0002s 0.0002s
INIT time 0.00s ( 0.00s elapsed)
MUT time 6.72s ( 6.75s elapsed)
GC time 0.07s ( 0.08s elapsed)
EXIT time 0.00s ( 0.00s elapsed)
Total time 6.79s ( 6.83s elapsed)
%GC time 1.1% (1.2% elapsed)
Alloc rate 822,831,578 bytes per MUT second
Productivity 98.9% of total user, 98.4% of total elapsed
6.79 user 0.04 system 0:06.82 elapsed
Trac metadata
Trac field | Value |
---|---|
Version | 7.4.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |