On 06/14/2010 01:18 PM, Hrvoje Niksic wrote:
> Thomas Jollans <tho...@jollans.com> writes:
> 
>> 1. allocate a buffer of a certain size
>> 2. fill it
>> 3. return it as an array.
> 
> The fastest and more robust approach (I'm aware of) is to use the
> array.array('typecode', [0]) * size idiom to efficiently preallocate the
> array, and then to get hold of the pointer pointing into array data
> using the buffer interface.

Ah, create a single-element array, and multiply that. That's not a bad
approach, the overhead is probably equivalent to what I have now:
currently, I create an uninitialized(!) bytes of the correct size, fill
it myself, and initialize an array from that. Both approaches have the
overhead of creating one extra Python object (bytes/single-element
array) and either copying one element over and over, or memcpy'ing the
whole buffer.

> 
> Please send a message to capi-...@python.org, a SIG specializing in the
> Python/C API, if you need more help with implementing this.

I'll probably subscribe to that list, thanks for the hint.

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

Reply via email to