Request body iteration specialisation #611
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The majority of time the request body is a
NIOAsyncChannelRequestBody
. This PR adds a specialisation for this type. So instead of going throughAnyAsyncSequence
it calls the NIOAsyncChannelRequestBody iterator next() function directly. The results are a slight improvement in performance, when parsing small request buffers, although not that much 64K - 65K requests.I mistakenly made
NIOAsyncChannelRequestBody
public with the HTTP2 changes. In this PR I make it a struct to avoid an additional allocation. I have also changed the public to package. In theory these changes are breaking. But they will affect basically no one, unless they decided to write their own HTTP1 channel handling code in the last 3 days.