
#8900: Strictness analysis regression --------------------------------------------+------------------------------ Reporter: tibbe | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.1-rc2 Resolution: | Keywords: Operating System: MacOS X | Architecture: x86_64 Type of failure: Runtime performance bug | (amd64) Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: --------------------------------------------+------------------------------ Comment (by tibbe): Without the extra case expression, there's still a small difference. Using the best of 5 runs, here are the numbers: HEAD (46d05ba03d1491cade4a3fe33f0b8c404ad3c760): {{{ $ ./HashMapInsert +RTS -s -A2G 1,191,223,096 bytes allocated in the heap 3,312 bytes copied during GC 35,992 bytes maximum residency (1 sample(s)) 13,160 bytes maximum slop 2081 MB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause Gen 0 0 colls, 0 par 0.00s 0.00s 0.0000s 0.0000s Gen 1 1 colls, 0 par 0.01s 0.01s 0.0060s 0.0060s INIT time 0.01s ( 0.02s elapsed) MUT time 0.60s ( 0.89s elapsed) GC time 0.01s ( 0.01s elapsed) EXIT time 0.01s ( 0.01s elapsed) Total time 0.62s ( 0.92s elapsed) %GC time 0.9% (0.6% elapsed) Alloc rate 1,991,359,179 bytes per MUT second Productivity 97.8% of total user, 66.0% of total elapsed }}} 7.6.3: {{{ $ ./HashMapInsert +RTS -s -A2G 1,191,223,528 bytes allocated in the heap 3,400 bytes copied during GC 36,080 bytes maximum residency (1 sample(s)) 13,072 bytes maximum slop 2081 MB total memory in use (0 MB lost due to fragmentation) Tot time (elapsed) Avg pause Max pause Gen 0 0 colls, 0 par 0.00s 0.00s 0.0000s 0.0000s Gen 1 1 colls, 0 par 0.01s 0.01s 0.0057s 0.0057s INIT time 0.01s ( 0.02s elapsed) MUT time 0.59s ( 0.86s elapsed) GC time 0.01s ( 0.01s elapsed) EXIT time 0.01s ( 0.01s elapsed) Total time 0.61s ( 0.90s elapsed) %GC time 0.9% (0.6% elapsed) Alloc rate 2,033,686,150 bytes per MUT second Productivity 97.8% of total user, 66.4% of total elapsed }}} I've attached the Cmm for both HEAD and 7.6.3. They're not trivial to compare as in HEAD everything is in one function, `$wpoly_go_entry`, while in 7.6.3 it's split over two, `$wpoly_go_info` and `s2ZS_ret`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8900#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler