On Mon, Mar 29, 2010 at 10:31, Nader Salehi <[email protected]> wrote:
> Hi,
>
> In my code, I have a PB message which encompass other PB messages.
> For instance,
>
> Protocol Buffer File
> ===============
> message A {
>  required int32 a = 1;
> }
>
> message B {
>  required int32 b = 1;
> }
>
> message C {
>  required A a = 1;
>  required B b = 2;
> }
>
> C++ File
> ========
> #include "PB File.pb.h"
>
> using namespace <whatever>
>
> int main ()
> {
>  C c;
>   ...
>  char buff[MAX_SIZE]
>  int len = c.SerializeToArray(buff, MAX_SIZE);
>  write(fd, buff, len);
>  ...
> }
>
> As part of the logic, I need to write into separate files the
> serialized equivalent of c.a and c.b.  Of course you can always call
> c.a().SerializeToArray() but that requires additional CPU time which I
> would like to avoid.  Is there a non-hackish way of getting the offset
> of c.a in the serialized buffer?  Can I use the offset and
> c.a().ByteSize() to write the message into the file descriptor?

You might want to write the data directly to the stream with the
available streams instead of copying into a buffer first.
Second, I wouldn't worry at all about the required CPU serializing
c.a() and c.b() individually; you should first measure if it actually
makes a difference before thinking of optimizing it in a hackish way.

-h

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to