[Python-3000] Immutable bytes type and dbm modules

Talin talin at acm.org
Tue Aug 7 05:50:27 CEST 2007


Martin v. Löwis wrote:
>> The most efficient representation of immutable bytes is quite different
>> from the most efficient representation of mutable bytes.
> 
> In what way?

Well, in some runtime environments (I'm not sure about Python), for 
immutables you can combine the object header and the bytes array into a 
single allocation. Further, the header need not contain an explicit 
pointer to the bytes themselves, instead the bytes are obtained by doing 
pointer arithmetic on the header address.

For a mutable bytes object, you'll need to allocate the actual bytes 
separately from the header. Typically you'll also need a second 'length' 
field to represent the current physical capacity of the allocated memory 
block, in addition to the logical length of the byte array.

So in other words, the in-memory layout of the two structs is different 
enough that attempting to combine them into a single struct is kind of 
awkward.

> Curious,
> Martin
> 


More information about the Python-3000 mailing list