The fast path only works if the "optimize_for" option is set to "SPEED" in
the proto file. If that's not the case, just use approach 2.
If you enabled the "optimize_for" option and want to take advantage of the
fast path, 3) seems to be a reasonable approach. The code should be similar
to the implementation of WireFormatLite::WriteMessageMaybeToArray(). Maybe
we can just add a WireFormatLite::WriteMessageNoTagMaybeToArray().
On Wed, Jun 26, 2013 at 8:17 AM, Hochhaus, Andrew <ahochh...@samegoal.com>wrote:
> Does anyone have any insight on Evan's "related question" below?
> On Thu, Jun 17, 2010 at 5:05 PM, Evan Jones <ev...@mit.edu> wrote:
> > Related question: If I am writing length-prefixed values, what is the
> > way to do this? I think there are 3 approaches:
> > 1. out.WriteVarint32(msg.ByteSize()); msg.SerializeToCodedStream(&out);
> > This approach will choose between the "ToArray" and "regular" versions of
> > the Serialize method, as appropriate. However, it computes the ByteSize
> > twice.
> > 2. out.WriteVarint32(msg.ByteSize()); msg.SerializeWithCachedSizes(&out);
> > This computes the ByteSize once, but never uses the "fast path" ToArray
> > method.
> > 3. Some custom code that calls ByteSize once, then chooses between the
> > "fast" and "slow" methods, as appropriate. Is there actually any
> > difference in performance between SerializeWithCachedSizes and
> > SerializeWithCachedSizesToArray, so it would be worth me actually doing
> > this?
> 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 protobuf+unsubscr...@googlegroups.com.
> To post to this group, send email to email@example.com.
> Visit this group at http://groups.google.com/group/protobuf.
> For more options, visit https://groups.google.com/groups/opt_out.
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 post to this group, send email to firstname.lastname@example.org.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/groups/opt_out.