[Haskell-cafe] idea for avoiding temporaries
David Roundy
droundy at darcs.net
Thu Mar 8 16:50:09 EST 2007
On Thu, Mar 08, 2007 at 04:32:01PM -0500, Brandon S. Allbery KF8NH wrote:
> On Mar 8, 2007, at 16:27 , David Roundy wrote:
> >The real issue for me is that DiffArrays only make any sense at all if
> >you often update a subset of your array, which I never expect to do...
> >so even if they were efficiently implemented to the point of zero
> >overhead, they would gain me nothing, and that's almost certainly overly
> >optimistic.
>
> But that's not my understanding of what's *supposed* to be
> happening: the point of DiffArrays is is not optimizing partial
> updates, it's optimizing the head at the expense of any (by intent
> few or none) references that might be held elsewhere. As such, if
> there are no such references the DiffArray *should* get you cheap in-
> place (destructive) updates.
Ah, I see. Yes, I misunderstood. When I read about DiffArrays (ages ago),
I thought they stored the old array plus differences, a mistake which makes
sense given that I wasn't yet comfortable with safe encapsulation of
unsafePerformIO.
You're right, but the cheap destructive updates still presumably involve
creating and garbage-collecting O(N) thunks, which isn't particularly
cheap, in my opinion. Or if the update function holds a reference to the
original array, then you'll have to store two copies of the array in a
non-dense format, and we won't have gained anything, as far as the
temporary goes.
--
David Roundy
Department of Physics
Oregon State University
More information about the Haskell-Cafe
mailing list