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) * ![]() |
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) * ![]() |
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 |