Conversation
Set timeouts to 0 in order to increase throughput.
Reviewer's GuideDisabled default timeouts on the serial interface and WiFi client, eliminating waiting delays to boost throughput by roughly 20%. Sequence Diagram: Configuring Serial Timeout in SetupsequenceDiagram
participant S as Setup
participant Ser as Serial
S->>Ser: setTimeout(0)
Sequence Diagram: Configuring WiFiClient Timeout on Available ClientsequenceDiagram
participant L as Loop
participant Serv as WiFiServer
participant Cli as WiFiClient
L->>Serv: available()
Serv-->>L: client
L->>Cli: setTimeout(0)
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey @marcnause - I've reviewed your changes and they look great!
Here's what I looked at during the review
- 🟢 General issues: all looks good
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
|
Are there any drawbacks to setting timeout to zero? What is the default value? |
|
The default values are 1000ms for Serial and 5000ms for the WiFi connection. I found both values in the code of the used libraries and I also requested them in the code and logged it to the serial console using a NodeMCU V3 ESP8266 board. I would never set the timeouts to zero in other contexts, but I don't think it hurts here since we are in an infinite loop which only has two things to do and if we miss a value, we will catch it in the next iteration. I don't see any drawbacks, but of course that does not mean that there is anything I am missing. I did not have any issues with the changes so far, but it would be great if we could test it more thoroughly. I have created an issue for this PR: #18 |
|
Do we have any end-of-packet delimiter in the UART packets? Maybe someone is waiting until the timeout to detect the end of packet? Or maybe it is waiting for a buffer to be empty. Or maybe this slowness is due to something else.. |
|
Given that this provides an immediate benefit with no obvious drawback, I see no reason not to merge it as-is. We will continue to refine the wireless handling as we go. |
I set timeouts to 0 in order to increase throughput. I did some measurements (getting oscilloscope data) and in my setup data transfer was up to 20 percent faster. This is not the breakthrough I was hoping for, but it is an improvement.
Summary by Sourcery
Enhancements: