[PYTHON MATRIX-SIG] More on Less Copying

Konrad Hinsen hinsen@ibs.ibs.fr
Wed, 12 Mar 1997 11:41:32 +0100

> Yes and no. There is nothing wrong with the interface to pickle, but
> the current implementation has an additional copy implied by
> tostring().

Indeed, I hear it every time I save a big array ;-)

> The read() method could treat the data in the file as a byte-stream
> defining a sequence of equal-sized elements without gaps or blocking.
> It could map between the array and the sequence in the same way that
> you map between an array and its ravel(). That way your file does not
> need to know the layout of an array.

Sounds reasonable, assuming that we don't have to deal with files
that themselves have weird layouts. But I can't think of any right

> The problem is the format of the elements. You could survive on most
> modern machines by assuming that the elements were either in native
> format or byte-swapped native format. You would have a problem

I could certainly live with that restriction.

> To my mind, the sticky interface issue is whether to have read() do
> the byteswapping or not. If it does it in C, we can avoid another
> copy. I'd suggest something along the lines of:
>     a = Numeric.new(shape, typecode)
>     a.read(file, order=...)
>     a.read("file", order=...)


> Operators like += need not break the imutable types; they could act
> as a shorthand and might save looking up the same name twice.

In that case we wouldn't have to worry about them, since they would
be mapped to the standard __add__ etc. and would not denote in-place
Konrad Hinsen                          | E-Mail: hinsen@ibs.ibs.fr
Laboratoire de Dynamique Moleculaire   | Tel.: +33-
Institut de Biologie Structurale       | Fax:  +33-
41, av. des Martyrs                    | Deutsch/Esperanto/English/
38027 Grenoble Cedex 1, France         | Nederlands/Francais

MATRIX-SIG  - SIG on Matrix Math for Python

send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org