SBCL-specific optimization for plain blob HTTP output. #191
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.
When a easy-handler returns a string or ub8-vector
for output, the small socket buffer size hurts performance
by requiring many unnecessary context switches, resp.
allows for other threads to be scheduled.
By just writing prepared data as it is, the socket buffer
can be streamed as fast as available bandwidth allows it.
(Note: on Linux a reasonable TCP buffer sysctl is recommended,
for example "
net.ipv4.tcp_wmem = 131072 131072 4194304
").For small request sizes, the difference is within the noise floor:
But for larger outputs (here a 115kB PDF) this patch decreases
latency by quite a large margin. From
the 99% latency is nearly halved:
For HTTPS, chunked output, and other stream types this keeps
the old behaviour.