Real World Haskell: Deprecated Libraries

Hello Haskellers, I have been working through the Real World Haskell chapter on Profiling and Optimisation http://book.realworldhaskell.org/read/profiling-and-optimization.html, and got to the section *Advanced techniques: fusion*, where I encountered some code using Data.Array.Vector from the deprecated library uvector. Does anyone know how to rewrite this to not use deprecated libraries? I have tried to use Data.Vector.Unboxed from vector, but my version consumes a lot of memory. The code I have is here: https://github.com/haskell-works/hw-tutorial-performance/blob/master/hw-tuto... With that code, I get “1831 MB total memory in use”, which is terrible Build run steps I used were: stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts -auto-all -caf-all -fforce-recomp" time /Users/jky/wrk/haskell-works/hw-tutorial-performance/.stack-work/install/x86_64-osx/lts-7.10/8.0.1/bin/hw-tutorial-performance-rwhe +RTS -sstderr -p -hy -RTS 1e7 I get very large numbers of allocations of Pair and Double. There is also a very large upfront allocation ARR_WORDS, which I feared would happen when using Data.Vector Any help appreciated. Cheers, -John

It looks like Haskell stack's profile options are defeating stream fusion.
Anyone know a work-around?
On Mon, 28 Nov 2016 at 08:23 John Ky
Hello Haskellers,
I have been working through the Real World Haskell chapter on Profiling and Optimisation http://book.realworldhaskell.org/read/profiling-and-optimization.html, and got to the section *Advanced techniques: fusion*, where I encountered some code using Data.Array.Vector from the deprecated library uvector.
Does anyone know how to rewrite this to not use deprecated libraries?
I have tried to use Data.Vector.Unboxed from vector, but my version consumes a lot of memory.
The code I have is here:
https://github.com/haskell-works/hw-tutorial-performance/blob/master/hw-tuto...
With that code, I get “1831 MB total memory in use”, which is terrible
Build run steps I used were:
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts -auto-all -caf-all -fforce-recomp"
time /Users/jky/wrk/haskell-works/hw-tutorial-performance/.stack-work/install/x86_64-osx/lts-7.10/8.0.1/bin/hw-tutorial-performance-rwhe +RTS -sstderr -p -hy -RTS 1e7
I get very large numbers of allocations of Pair and Double.
There is also a very large upfront allocation ARR_WORDS, which I feared would happen when using Data.Vector
Any help appreciated.
Cheers,
-John

Try using foldl', usually that's the right thing to do for this kind of
data structure.
On Sun, Nov 27, 2016 at 2:39 PM, John Ky
It looks like Haskell stack's profile options are defeating stream fusion.
Anyone know a work-around?
On Mon, 28 Nov 2016 at 08:23 John Ky
wrote: Hello Haskellers,
I have been working through the Real World Haskell chapter on Profiling and Optimisation http://book.realworldhaskell.org/read/profiling-and-optimization.html, and got to the section *Advanced techniques: fusion*, where I encountered some code using Data.Array.Vector from the deprecated library uvector.
Does anyone know how to rewrite this to not use deprecated libraries?
I have tried to use Data.Vector.Unboxed from vector, but my version consumes a lot of memory.
The code I have is here:
https://github.com/haskell-works/hw-tutorial-performance/ blob/master/hw-tutorial-performance-rwhe/Main.hs
With that code, I get “1831 MB total memory in use”, which is terrible
Build run steps I used were:
stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts -auto-all -caf-all -fforce-recomp"
time /Users/jky/wrk/haskell-works/hw-tutorial-performance/.stack-work/install/x86_64-osx/lts-7.10/8.0.1/bin/hw-tutorial-performance-rwhe +RTS -sstderr -p -hy -RTS 1e7
I get very large numbers of allocations of Pair and Double.
There is also a very large upfront allocation ARR_WORDS, which I feared would happen when using Data.Vector
Any help appreciated.
Cheers,
-John
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
participants (2)
-
Bob Ippolito
-
John Ky