On 11 April 2007 17:05, Andi Kleen wrote:

>>> Adding a xor is basically free and much cheaper than any cache miss
>>> from larger data structures.
>> 
>>   Using a delta is even better than an XOR, because it remains constant
>> when you relocate the data.
> 
> You can xor deltas as well as pointers. The concepts are independent.
> 
> Delta alone doesn't save anything on 32bit -- and on 64bit only when you
> accept < 2GB data (which might be reasonable for a basic block, but
> probably not for a full function).
>
> 
> xor always halves the space needed for links.

  No, you've misunderstood.  You can't "xor deltas" because there is only one
of them.  Go read the link that explains what a delta-linked list is.  It's
the *exact* same as what you're describing, only instead of storing the XOR of
the next and prev pointers, you store the difference between them.  You're
changing the xor operation for a subtract, nothing else.  This has the
advantage that the delta doesn't need recalculation if you move the whole
memory block en-masse to a new address, unlike an xor.

>>   However we already discussed the whole idea upthread and the general
>> feeling was that it's a whole bunch of tricky code for a small saving, so
>> not worth 
> 
> Is it tricky? You just need some abstraced iterators and a special case
> in the GC.   

  Yes, I'm aware of the elementary principles of software engineering, as is
everyone else in the discussion.  If you wouldn't mind *reading* the earlier
discussion, rather than insisting on repeating it word for word...

> I wrote a couple of xor list implementations in the past
> and didn't fid it particularly tricky, but given that was without
> any GC.

  I think the real point is that the tuples implementation is a big enough and
risky enough and resource-consuming-enough change already to not want to get
fancy about it.  Iterative, incremental: we can change to delta pointers at a
future time if we decide the memory savings outweigh any potential code
obfuscation.

> When you need to go over all the code anyways it would make
> sense to do such changes in one go. Or at least move to abstracted
> iterators early :- if you do that then changing the actual data structure
> later is relatively easy. Both xor list and deltas can be hidden with some
> care.

  I don't see you offering to actually do any of the *work*, just repeating an
idea that's already been suggested and that the people who actually /are/
going to do the work have politely declined as being nonessential extra effort
for little reward.


    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

Reply via email to