The Kit 8 is faster than the 32?

I’m perplexed.

I have and Heltec WiFi Kit 32 and a Heltec WiFi Kit 8 and the Kit8 is faster than the Kit32. Same code.

My sketch offers the user a choice of six different sensors some of which have two like the DHT-11. The user can turn these on and off dependent on what they hook up, or they could turn them all on in simulator mode. The home page allows for these adjustments in addition to many more options for calibration and the user can select offline HTML gauges or charts to view the data as it happens.

The Arduino will dynamically put the pages together to send them off to the client. There could be 1 gauge/chart or there could be 10. The data is updated by callback to the Arduino using the JavaScript Set interval function on the client and ESP8266WebServer.on and WebServer.on callback handler functions. I have ensured that each client page SetInterval function has its own global variables and all the code compiles and runs fine, except the output. The Kit8 does a much better job of keeping up. I can update the gauges down 50ms and the Kit8 runs fine but the Kit 32 is very slow to start some gauges take minutes to update. The less gauges/charts there are is better for the Kit32 but the Kit 8 doesn’t care it handles them all fine. If I slow things down it doesn’t get any better for the Kit32. I’m making these webpage calls from a Window 10/i7 box using Chrome and admittedly the Kit32 performs better when I call it from a Raspberry 3b+.

I’m thinking this must be a Library thing and under the hood from my code.

Does anyone have any thoughts?

Here is some images to help understand the project.

I’m happy to provide more detail but it very complex and at this point I’m hoping for a miracle.

Thanks

I managed to “Band-Aid” this problem. It was suggested in another feed to place a Delay(1) before WebServer.handleClient. This didn’t help, so on a guess it tried replacing the Delay() call with a more “Non-Blocking solution”. This resolved the problem however I suspect it will come at an increased power drain.

Place DoEvents(10) in your Loop()

Hope this helps others.

void DoEvents(int mils) {
unsigned long currentMillis = millis();
if (currentMillis + mils > 4294967295)
delay(mils);
else
while ((currentMillis + mils) > millis()) {
server.handleClient();
yield();
}
}