
= Data.Vector.Fusion.Util Data/Vector/Fusion/Util.hs:36:3-18 12.4 19.9 compile'.\ Main performance- bug-2.hs:40:22-33 11.4 4.3 basicUnsafeIndexM Data.Vector.Primitive Data/Vector/Primitive.hs:222:3-75 10.9 16.1 matchPacked Main performance- bug-2.hs:(108,1)-(111,27) 8.8 11.0 uniform System.Random.MWC System/Random/MWC.hs:217:5-33 8.7 15.0 basicUnsafeIndexM Data.Vector.Unboxed.Base Data/Vector/Unboxed/Base.hs:266:841-899 6.6 0.0 matchPacked.go Main performance- bug-2.hs:(110,5)-(111,27) 3.7 0.4 = Data.Vector.Fusion.Util Data/Vector/Fusion/Util.hs:50:3-19 3.3 2.6 getOverhead Criterion.Monad Criterion/Monad.hs:(47,1)-(56,12) 3.3 0.0 basicUnsafeWrite Data.Vector.Primitive.Mutable Data/Vector/Primitive/Mutable.hs:115:3-69 2.7 2.3 basicUnsafeIndexM Data.Vector.Unboxed.Base Data/Vector/Unboxed/Base.hs:345:3-73 2.6 11.2 matched.matches Main performance- bug-2.hs:28:5-27 2.4 0.0 basicUnsafeIndexM Data.Vector.Unboxed.Base internal/unbox-tuple- instances:(452,3)-(458,29) 2.2 0.0 compile' Main performance- bug-2.hs:40:1-33 1.7 0.0 compile.cc Main performance- bug-2.hs:37:5-28 1.6 0.0 getGCStats Criterion.Measurement Criterion/Measurement.hs:(46,1)-(48,16) 1.5 0.0 matched Main performance- bug-2.hs:(23,1)-(29,23) 1.5 2.4 basicLength Data.Vector.Unboxed.Base Data/Vector/Unboxed/Base.hs:343:3-42 1.1 0.0 fmap Data.Vector.Fusion.Stream.Monadic Data/Vector/Fusion/Stream/Monadic.hs:(133,3)-(135,20) 0.7 1.0 toPacked4.inst Main performance- bug-2.hs:88:5-26 0.6 1.1
= Data.Vector.Fusion.Util Data/Vector/Fusion/Util.hs:36:3-18 19.4 26.9 basicUnsafeIndexM Data.Vector.Primitive Data/Vector/Primitive.hs:222:3-75 14.8 18.3 compile'.\ Main performance- bug-2.hs:40:22-33 13.0 5.0 matchPacked Main performance- bug-2.hs:(108,1)-(111,27) 7.2 8.6 = Data.Vector.Fusion.Util Data/Vector/Fusion/Util.hs:50:3-19 4.2 3.0 basicUnsafeIndexM Data.Vector.Unboxed.Base Data/Vector/Unboxed/Base.hs:266:841-899 3.9 0.0 matchPacked.go Main performance- bug-2.hs:(110,5)-(111,27) 3.4 0.4
#14980: Runtime performance regression with binary operations on vectors -------------------------------------+------------------------------------- Reporter: ttylec | Owner: bgamari Type: bug | Status: new Priority: high | Milestone: 8.8.1 Component: Compiler | Version: 8.2.2 Resolution: | Keywords: vector | bitwise operations Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by tdammers): Profiled builds don't seem to reveal much, because as soon as I enable profiling, the performance difference between LTS 9 / GHC 8.0.2 and LTS 11 / GHC 8.2.2 disappears almost entirely - in fact, a profiling build from LTS 9 is *slower* than one from LTS 11. Profile output from LTS 9: {{{ Tue Jun 26 16:12 2018 Time and Allocation Profiling Report (Final) performance-bug-2 +RTS -p -RTS total time = 28.28 secs (28277 ticks @ 1000 us, 1 processor) total alloc = 24,003,734,896 bytes (excludes profiling overheads) COST CENTRE MODULE SRC %time %alloc pack64bit Main performance- bug-2.hs:(59,1)-(62,23) 0.6 1.8 }}} And LTS 11: {{{ Tue Jun 26 14:26 2018 Time and Allocation Profiling Report (Final) performance-bug-2 +RTS -p -RTS total time = 23.79 secs (23791 ticks @ 1000 us, 1 processor) total alloc = 17,329,594,624 bytes (excludes profiling overheads) COST CENTRE MODULE SRC %time %alloc primitive Control.Monad.Primitive Control/Monad/Primitive.hs:178:3-16 3.2 0.2 basicUnsafeIndexM Data.Vector.Unboxed.Base Data/Vector/Unboxed/Base.hs:345:3-73 2.9 13.2 matched.matches Main performance- bug-2.hs:28:5-27 2.7 0.0 uniform System.Random.MWC System/Random/MWC.hs:217:5-33 2.0 0.9 matched Main performance- bug-2.hs:(23,1)-(29,23) 2.0 2.8 basicUnsafeIndexM Data.Vector.Unboxed.Base internal/unbox-tuple- instances:(452,3)-(458,29) 1.8 0.0 compile' Main performance- bug-2.hs:40:1-33 1.7 0.0 basicUnsafeWrite Data.Vector.Primitive.Mutable Data/Vector/Primitive/Mutable.hs:115:3-69 1.5 4.2 compile.cc Main performance- bug-2.hs:37:5-28 1.5 0.0 basicLength Data.Vector.Unboxed.Base Data/Vector/Unboxed/Base.hs:343:3-42 1.2 0.0 toPacked4.inst Main performance- bug-2.hs:88:5-26 0.9 1.5 basicUnsafeRead Data.Vector.Primitive.Mutable Data/Vector/Primitive/Mutable.hs:112:3-63 0.7 1.7 fmap Data.Vector.Fusion.Stream.Monadic Data/Vector/Fusion/Stream/Monadic.hs:(133,3)-(135,20) 0.7 1.1 take64.(...) Main performance- bug-2.hs:66:17-38 0.6 2.3 }}} And the main culprits are roughly the same, give or take ordering. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14980#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler