On Tue, Oct 27, 2015 at 5:02 AM, <[email protected]> wrote:

> Hello,
>
> I would like to learn about how oneof's are encoded in binary and what the
> serialization and deserialization cost maybe. To provide with some context,
> I am experimenting with a streaming rpc service. To be specific it is a
> client side streaming, something akin to the grpc documentation:
>
> rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse) {}
>
>
> As many different messages maybe consumed during a lifetime of a single
> connection, we have opted to use oneofs to handle the different messages
> and dispatched to the appropriate handlers. As we may have potentially
> multiple layers of dispatching, this would require us to have multiple
> layer of oneofs (correct?).
>
>
> What I would like to know is how much type information is stored for the
> unset fields/types. As we may have a complex message hierarchy to solve our
> multiple layers, it would be great if someone could provide us answers
> regarding overhead for this processing as well.
>
On the wire, only the field that's actually set will be serialized so extra
fields in an oneof will have no extra cost.

In the memory, we use unions in C++ and Object in Java to store oneof
fields, so unset fields will not take extra memory as well.

Hope this answers your question.


>
>
> Thanks!
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/protobuf.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to