-
Notifications
You must be signed in to change notification settings - Fork 75
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
Improving Decoder
performance using Read
trait.
#75
Comments
Hi, I'm new to the code base and I don't have any experience contributing to open source but I want to start and offer my help. Would you be able to give me some pointers on how I can get familiar with the code base enough to tackle this issue? |
Hi @hasanhaja, thanks for your help! This improvement is quite localized in the library and only two files should be updated:
To make this change. it is important to be familiar with the Do not hesitate to ask any doubt or any new ideas to tackle the problem. 😃 |
Hi @lemunozm, thank you for the pointers! I'm looking into the code and getting a feel for what's going on now, and I'll circle back with questions soon. |
Task management
Todo
|
Hi @lemunozm , is this still relevant issue? 🤔 |
Hi @seonwoo960000, It's just a matter of performance improvement. I'm not sure how much it can pump up the performance in real scenarios, to be honest. As far as I know, there is no work done on it right now |
The
Decoder
is used by theFramedTcp
transport to transform a stream-based protocol (TCP) into a packet-based protocol that fits really well with the concept of message.The
Decoder
collects data from the stream until it can be considered a message. In that process, each chunk of data received from the network is written in a temporal buffer. If that data is not yet a message, then, deDecoder
copies from that buffer to its internal buffer in order to wait for more chunks.This last copy can be avoided if we are able to read directly into the decoder. To get this, the decoder could expose its buffer in order to allow the
stream.read()
dumping its data directly into the decoder, or even better, theDecoder
can receive aRead
trait object (that would be the socket) from which extract the data. Something similar to:Note that since it works in a non-blocking way, several calls to read must be performed inside this function until receiving a
WouldBlock
io error.The text was updated successfully, but these errors were encountered: