From 3720a570f2c2d1617d59a9832e4384e4479006a7 Mon Sep 17 00:00:00 2001 From: Peter Hinch Date: Fri, 27 Aug 2021 17:45:13 +0100 Subject: [PATCH] docs/reference: Mention that slicing a memoryview causes allocation. --- docs/reference/speed_python.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/reference/speed_python.rst b/docs/reference/speed_python.rst index a563b2d36c..85e956e8e6 100644 --- a/docs/reference/speed_python.rst +++ b/docs/reference/speed_python.rst @@ -91,9 +91,11 @@ code these should be pre-allocated and passed as arguments or as bound objects. When passing slices of objects such as `bytearray` instances, Python creates a copy which involves allocation of the size proportional to the size of slice. -This can be alleviated using a `memoryview` object. `memoryview` itself -is allocated on heap, but is a small, fixed-size object, regardless of the size -of slice it points too. +This can be alleviated using a `memoryview` object. The `memoryview` itself +is allocated on the heap, but is a small, fixed-size object, regardless of the size +of slice it points too. Slicing a `memoryview` creates a new `memoryview`, so this +cannot be done in an interrupt service routine. Further, the slice syntax ``a:b`` +causes further allocation by instantiating a ``slice(a, b)`` object. .. code:: python