Optimization: stop to constantly search for the bus

Adding a caching mechanism to the Bus Manager - up to 30% faster especially when many led pins are used.
This commit is contained in:
Frank
2024-04-20 21:57:04 +02:00
parent 59752adc3b
commit 657259acc2
2 changed files with 41 additions and 5 deletions

View File

@@ -427,8 +427,12 @@ class BusManager {
private:
uint8_t numBusses = 0;
Bus* busses[WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES];
Bus* busses[WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES] = {nullptr}; // WLEDMM init array
ColorOrderMap colorOrderMap;
// WLEDMM cache last used Bus -> 20% to 30% speedup when using many LED pins
Bus *lastBus = nullptr;
unsigned laststart = 0;
unsigned lastend = 0;
inline uint8_t getNumVirtualBusses() {
int j = 0;