Skip to content
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

bpo-41002: Optimize HTTPResponse.read with a given amount #20943

Merged
merged 4 commits into from Jun 25, 2020

Conversation

bmerry
Copy link
Contributor

@bmerry bmerry commented Jun 17, 2020

I've done the implementation for both non-chunked and chunked reads. I haven't benchmarked chunked reads because I don't currently have a convenient way to generate a high-bandwidth chunked stream, but I don't see any reason that it shouldn't enjoy the same benefits that the non-chunked case does. I've used the benchmark attached to the bpo bug to verify that performance now matches the unsized read case.

https://bugs.python.org/issue41002

Automerge-Triggered-By: @methane

bmerry added 3 commits Jun 17, 2020
This only applies to the non-chunked case; the chunked case is still
going via readinto.

Also added unit tests for reads that are larger than the Content-Length
header, because coverage showed that code path wasn't being tested and I
wanted 100% for the code I was adding.
Most of the code was already in `_readall_chunked`, so I renamed it to
`_read_chunked` and gave it an optional `amt` argument. This also
allows the code flow for `read` and `readinto` to be more similar.
@bmerry
Copy link
Contributor Author

bmerry commented Jun 17, 2020

@methane this might be of interest to you, since you made the previous optimization I suggested on httplib.

@methane methane added 🤖 automerge PR will be merged once it's been approved and all CI passed performance Performance or resource usage labels Jun 25, 2020
Copy link
Member

@methane methane left a comment

LGTM

@miss-islington miss-islington merged commit 152f0b8 into python:master Jun 25, 2020
4 checks passed
fasih pushed a commit to fasih/cpython that referenced this pull request Jun 29, 2020
…0943)

I've done the implementation for both non-chunked and chunked reads. I haven't benchmarked chunked reads because I don't currently have a convenient way to generate a high-bandwidth chunked stream, but I don't see any reason that it shouldn't enjoy the same benefits that the non-chunked case does. I've used the benchmark attached to the bpo bug to verify that performance now matches the unsized read case.

Automerge-Triggered-By: @methane
arun-mani-j pushed a commit to arun-mani-j/cpython that referenced this pull request Jul 21, 2020
…0943)

I've done the implementation for both non-chunked and chunked reads. I haven't benchmarked chunked reads because I don't currently have a convenient way to generate a high-bandwidth chunked stream, but I don't see any reason that it shouldn't enjoy the same benefits that the non-chunked case does. I've used the benchmark attached to the bpo bug to verify that performance now matches the unsized read case.

Automerge-Triggered-By: @methane
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Performance or resource usage 🤖 automerge PR will be merged once it's been approved and all CI passed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants