BewareMyPower opened a new pull request, #968:
URL: https://github.com/apache/pulsar-client-go/pull/968

   ### Motivation
   
   Currently there are three implementations of the `MessageID` interface:
   - `messageID`: 24 bytes
   - `trackingMessageID`: 64 bytes
   - `chunkMessageID`: 80 bytes
   
   However, for all methods of them, the receiver is a value rather than a 
pointer. It's inefficient because each time a method is called, the copy would 
happen.
   
   Reference: https://go.dev/tour/methods/8
   
   ### Modifications
   
   - Change the receiver from value to pointer for all `MessageID` 
implementations.
   - Use pointers as the returned values and function parameters for these 
implementations everywhere.
   
   The `trackingMessageID.Undefined` method is removed because it's never used 
now. Though it's a public method, the struct and its factory function are not 
exposed, so I think it's reasonable.
   
   Remove the benchmark added in
   https://github.com/apache/pulsar-client-go/pull/324. The result is obvious 
and this test is meaningless. I tried passing the `trackingMessageID` by 
pointer and the result reduced from 8.548 ns/op to 1.628 ns/op. It's obvious 
because a pointer is only 8 bytes while a `trackingMessageID` is 64 bytes. The 
overhead of accessing by pointers is far less than copying the extra bytes.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to