Steve Holden wrote:

> > The memory allocation for integers is optimized. 'Small' integers
> > (between -5 and 100 IIRC) are allocated once and reused. The memory for
> > larger integers is allocated once and reused whenever possible, so the
> > malloc() overhead is negligible.
>
> The first bit's right, the second bit isn't:
>
>   >>> id(12100)
> 4604168
>   >>> id(121*100)
> 4604204
>   >>>

quoting from Objects/intobject.c :

   Integers are quite normal objects, to make object handling uniform.
   (Using odd pointers to represent integers would save much space
   but require extra checks for this special case throughout the code.)
   Since a typical Python program spends much of its time allocating
   and deallocating integers, these operations should be very fast.
   Therefore we use a dedicated allocation scheme with a much lower
   overhead (in space and time) than straight malloc(): a simple
   dedicated free list, filled when necessary with memory from malloc().

    http://svn.python.org/projects/python/trunk/Objects/intobject.c

</F> 



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to