"Chris Mellon" <[EMAIL PROTECTED]> writes:

> It is a little annoying that there's no way to pre-allocate an
> array.  It doesn't over-allocate, either, so building on a few bytes
> at a time is pretty much worst case behavior.

The fine source says:

array_resize(arrayobject *self, Py_ssize_t newsize)
{
...
        /* This over-allocates proportional to the array size, making room
         * for additional growth.  The over-allocation is mild, but is
         * enough to give linear-time amortized behavior over a long
         * sequence of appends() in the presence of a poorly-performing
         * system realloc().
         * The growth pattern is:  0, 4, 8, 16, 25, 34, 46, 56, 67, 79, ...
         * Note, the pattern starts out the same as for lists but then
         * grows at a smaller rate so that larger arrays only overallocate
         * by about 1/16th -- this is done because arrays are presumed to be 
more
         * memory critical.
         */

        _new_size = (newsize >> 4) + (self->ob_size < 8 ? 3 : 7) + newsize;
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to