summaryrefslogtreecommitdiffstatshomepage
path: root/drivers/neopixel/neopixel.py
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2021-08-20 21:33:15 +1000
committerDamien George <damien@micropython.org>2021-08-30 23:26:29 +1000
commitd63b287c851ab6bae7b9912ba20a4b33612958f9 (patch)
treeed742e2fd110007e8235ae94e694f9d8cfa75452 /drivers/neopixel/neopixel.py
parenta3ce8f08ec19358fd1a3e64733a2644f371f7c1f (diff)
downloadmicropython-d63b287c851ab6bae7b9912ba20a4b33612958f9.tar.gz
micropython-d63b287c851ab6bae7b9912ba20a4b33612958f9.zip
drivers/neopixel: Optimize fill() for speed.
This makes fill() about 7x faster (PYBV11 and PYBD_SF6) for the cost of +40 bytes of bytecode (or 120 bytes text). Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'drivers/neopixel/neopixel.py')
-rw-r--r--drivers/neopixel/neopixel.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/neopixel/neopixel.py b/drivers/neopixel/neopixel.py
index 9ed5155c72..d83b51ebb4 100644
--- a/drivers/neopixel/neopixel.py
+++ b/drivers/neopixel/neopixel.py
@@ -37,8 +37,11 @@ class NeoPixel:
return tuple(self.buf[offset + self.ORDER[i]] for i in range(self.bpp))
def fill(self, color):
- for i in range(self.n):
- self[i] = color
+ for i in range(self.bpp):
+ c = color[i]
+ b = self.buf
+ for j in range(self.ORDER[i], len(self.buf), self.bpp):
+ b[j] = c
def write(self):
bitstream(self.pin, _BITSTREAM_TYPE_HIGH_LOW, self.timing, self.buf)