Optimizations for heap usage and module decomposition#25
Merged
Conversation
Running the state machine loop with a generator does not provide any advantage, and increases heap usage. This change simplifies the state machine loop by removing the yield statement. This way, the calling side needs to handle each invocation of `run()` as a separate state transition.
Improve HTTP/MIME header parsing by avoiding temporary allocations. Instead, iterate over headers once, parsing and validating fields directly in the provided memoryview object. Move multipart header/body parsing to the multipart module, reducing the memory footprint of the core HTTP parser.
Remove `_unset_response_handler` and centralize cleanup logic to be invoked through set_response_body(). This change reduces the memory footprint because of the removed function definition, as well as simplifies the internal response handling logic.
Move helpers for adding functions and properties to classes to a separate module. This improves the baseline memory footprint because these helpers are only used by the multipart parser module, enabled conditionally.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.