diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2021-08-20 21:33:15 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2021-08-30 23:26:29 +1000 |
commit | d63b287c851ab6bae7b9912ba20a4b33612958f9 (patch) | |
tree | ed742e2fd110007e8235ae94e694f9d8cfa75452 /drivers/neopixel/neopixel.py | |
parent | a3ce8f08ec19358fd1a3e64733a2644f371f7c1f (diff) | |
download | micropython-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.py | 7 |
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) |