-
Notifications
You must be signed in to change notification settings - Fork 5
fix: minimize timeouts #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.. |
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: