[WIP] Efficient movement of Vec<u8> to PyBytes #1427
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.
Hi!
This is related to #1385
I have a de/compression lib which gets some bytes in from Python, then passes them back.
Really like how
PyBytes::new_with
works; unfortunately, I don't know the exact size of the slice I want until after the de/compression operation. Using this approach, I end up with trailing null bytes.Using the standard
PyBytes::new
from a slice, ends up making the new allocation and thus just puts the lib slower than the existing Python/C options. However, the approach above can be reliably 1.5x - 2x faster; so really pulling that something like this is possible. 🤞As you see in the PR, I naively attempted to use
ffi::_PyBytes_Resize
but it seems to have no effect?Thanks for the help!
(related to benchmarks: milesgranger/cramjam#12 (comment))