@dalemorris164 each WS281X takes ~30 microseconds to update. In theory, this should support 16x parallel output, meaning if you had only one LED on each of the 16 data pins, it would still only take 30us.
So, 100 LEDs on each pin (1,600 total LEDs) would take 100 * 30 == 3,000 microseconds, or 3 milliseconds, to update. To translate that to frames per second, we just divide 1,000 by that, so 1,000 ms / 3 ms == 333.33 FPS.
200 LEDs on each pin (3,200 total LEDs) would take 6ms, or 166.67 FPS.
400 each - 6,400 total - 12ms - 83.33 FPS
800 each - 12,800 total - 24ms - 41.67 FPS
1,000 each - 16,000 total - 30ms - 33.33 FPS
This is all theoretical, of course. In practice it will take slightly longer per frame, to perform pattern calculations, handle Wi-Fi and/or Bluetooth, etc. It should be better on ESP32 than most other platforms, since we have another core handling most of the LED updates, but we also also have an RTOS, other threads, interrupts, etc.
I compiled my esp32-fastled-webserver sketch with 1,000 LEDs per strip x 16 strips for the NodeMCU-32S board, and it came up with these FLASH & RAM numbers:
Sketch uses 428,019 bytes (32%) of program storage space. Maximum is 1,310,720 bytes.
Global variables use 74,120 bytes (22%) of dynamic memory, leaving 253,560 bytes for local variables. Maximum is 327,680 bytes.
So RAM & FLASH limitations do not seem to be a concern.
I’ll get all of this information added to my product pages.
Thanks!