[Python-Dev] [Python-checkins] Who are the decimal volunteers? Re: cpython: Resize the coefficient to MPD_MINALLOC also if the requested size is below

Stefan Krah stefan at bytereef.org
Tue Apr 10 00:06:23 CEST 2012


Jim Jewett <jimjjewett at gmail.com> wrote:
> Why is there any need for MPD_MINALLOC at all for (immutable) numbers?
>> I suspect that will involve fleshing out some of the memory management
> issues around dynamic decimals, as touched on here:
> http://www.bytereef.org/mpdecimal/doc/libmpdec/memory.html#static-and-dynamic-decimals

MPD_MINALLOC
------------
"In order to avoid frequent resizing operations, the global variable
 MPD_MINALLOC guarantees a minimum amount of allocated words for the
 coefficient of each mpd_t. [...]" 
So the rationale is to avoid resizing operations. The mpd_t data type
is not immutable -- I suspect no high speed library for arbitrary
precision arithmetic has an immutable data type.
PyDecObjects are immutable, but they have to be initialized at
some point. The mpd_t struct is part of a PyDecObject and is
in the position of the result operand during initialization.
All operations in _decimal.c follow the same scheme:
 /* dec contains an mpd_t with MPD_MINALLOC words. */
 dec = dec_alloc();
 /* Initialization by a libmpdec function. MPD() is the
 accessor macro for the mpd_t. */
 mpd_func(MPD(dec), x, y, ...);
 /* From here on dec is immutable */
Stefan Krah


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /