Issue 19686: possible unnecessary memoryview copies? (original) (raw)

Issue19686

Created on 2013-11-21 23:46 by Lluís, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (3)
msg203700 - (view) Author: Lluís (Lluís) Date: 2013-11-21 23:46
The following code works without raising any AssertionError >>> n = "some small integer value" >>> m = "some larger integer value" >>> assert n<m >>> data = bytearray(n) >>> mem = memoryview(data) >>> assert mem==mem[:] >>> assert mem==mem[0:] >>> assert mem==mem[:m] However, the different slices have different IDs, failing on the following asserts: >>> assert id(mem)==id(mem[:]) >>> assert id(mem)==id(mem[0:]) >>> assert id(mem)==id(mem[:m]) Is the interpreter copying unnecessary data in these type of slices?
msg203717 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2013-11-22 03:11
I believe a new memoryview object is created, but the data is not copied. That's the whole point of memoryview, I think :)
msg203745 - (view) Author: Stefan Krah (skrah) * (Python committer) Date: 2013-11-22 12:24
David is correct: No data is copied, but new memoryview objects with different shape and strides are created. That is relatively cheap.
History
Date User Action Args
2022-04-11 14:57:53 admin set github: 63885
2013-11-22 12:24:43 skrah set status: open -> closedtype: enhancement -> behaviornosy: + skrahmessages: + resolution: not a bugstage: resolved
2013-11-22 03:11:16 r.david.murray set nosy: + r.david.murraymessages: +
2013-11-21 23:46:46 Lluís create