On Fri, Dec 5, 2008 at 4:36 PM, Henning Thielemann <[EMAIL PROTECTED]> wrote: > >> >> Data Types: >> HSoundFile-3 - custom AudioBuffer class. Implementations are >> provided for UArr Double, List Double, and StorableVector Double > > StorableVector or StorableVector.Lazy? The latter seems appropriate here.
I think that StorableVector is the correct choice. AudioBuffers are meant to be read/written strictly, in small chunks. I could certainly try StorableVector.Lazy. It may in fact be more performance. > >> Codecs - real 1m20s >> Enumerator - real 19s >> WAVE - real 29.1s >> hsndfile - real 2.0s > > You said, hsndfile can run with IOCArray and StorableVector. Which one did > you use here? IOCArray. I didn't test hsndfile with StorableVector. I would expect performance to be comparable here. > > I'm also still not satisfied with the signal processing speed I achieve > currently, although it increased dramatically using StorableVector instead > of [Double]. Your simple task is certainly a good testcase to track down > the problems. My suspicion is that signal processing should be done with a Stream type, something like the following: data Stream a = Stream a | EOF | Err String using some sort of buffer (Arrays, StorableVector, etc.). The real problem is that this leads to notably lower-level code than one would like to write. I've been toying with ways around this problem recently, but so far have nothing concrete. _______________________________________________ haskell-art mailing list haskell-art@lurk.org http://lists.lurk.org/mailman/listinfo/haskell-art