Skip to content

feat: avoid decoding known answers if we have no answers to give#1308

Merged
bdraco merged 32 commits into
masterfrom
avoid_parsing_answers
Nov 12, 2023
Merged

feat: avoid decoding known answers if we have no answers to give#1308
bdraco merged 32 commits into
masterfrom
avoid_parsing_answers

Conversation

@bdraco
Copy link
Copy Markdown
Member

@bdraco bdraco commented Nov 12, 2023

Inspired by #1307

In most cases were won't be able to answer the questions because we don't have an answer in the ServiceRegistry for the question since we only know how to answer for entries we have. In this case we can avoid building a set of answers and parsing the known answers in the incoming packet in the majority of cases.

This is a significant speed up since parsing incoming packets is the most expensive thing zeroconf does.

The downside is we might ask a question in the ServiceBrowser that was just asked by another host with the exact same known answer list but this is unlikely as its usually multiple ServiceBrowsers running in the same instance that would do that. We really need to solve #1171 though as thats where the really traffic reduction opportunity is.

@codecov
Copy link
Copy Markdown

codecov Bot commented Nov 12, 2023

Codecov Report

All modified and coverable lines are covered by tests ✅

Files Coverage Δ
src/zeroconf/__init__.py 100.00% <100.00%> (ø)
src/zeroconf/_core.py 100.00% <100.00%> (ø)
src/zeroconf/_handlers/answers.py 100.00% <100.00%> (ø)
src/zeroconf/_handlers/multicast_outgoing_queue.py 100.00% <100.00%> (ø)
src/zeroconf/_handlers/query_handler.py 100.00% <100.00%> (ø)
src/zeroconf/_listener.py 100.00% <ø> (ø)
src/zeroconf/_record_update.py 100.00% <ø> (ø)

📢 Thoughts on this report? Let us know!

@bdraco bdraco marked this pull request as ready for review November 12, 2023 18:50
@bdraco bdraco merged commit 605dc9c into master Nov 12, 2023
@bdraco bdraco deleted the avoid_parsing_answers branch November 12, 2023 18:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant