Bypass BufReader and state machine when decoding #451
Closed
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.
This sketches out how we could switch away from our current
BufRead
approach of taking slices of input to drive a state machine. It instead takes aRead
impl and pull bytes from it as needed.Leaving this draft state because there's APNG decoding isn't fully working at the moment and because I'm not fully sure we want to go down this path of duplicating the decoding logic between the low-level streaming API and the higher-level decoding API.
Performance is mixed with both significant improvements and regressions. It seems to vary based on the constants driving the minimum and maximum IDAT buffer sizes passed to the zlib decompressor.