use mutable bytearray instead of bytes as buffer #152
Merged
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 is a partial fix for the issue described in #149
Formerly, we were using an immutable bytes field as the buffer and each time reactor reads data from the socket, it were appending the received data to this buffer which was copying and re-creating the existing buffer data with the newly received data. I changed that to the bytearray which is mutable in python so extra re-creation is eliminated .
So overall, python client improved from ~50 seconds to ~35 seconds for the string test and from ~7 seconds to ~1 seconds for the bytes test in my computer
These were the results of the tests described in the #149 in my computer with the old code.
Bytes test, java client
Bytes test, python client
String test, java client
String test, python client
And here are the results for python client with the new code
String test, python client
Bytes test, python client