Thanks for clearing that up, looks like we'll have some cleanup to do
next time we upgrade...

On Dec 12, 3:44 pm, Kenton Varda <ken...@google.com> wrote:
> On Sat, Dec 12, 2009 at 11:21 AM, atkretsch <atkret...@gmail.com> wrote:
> > You can reuse the builder object by clearing it after each iteration
> > like so:
>
> No you can't.  This coincidentally appeared to work in earlier versions but
> it was never supposed to work according to the docs.  In 2.2.0 it throws an
> exception.  We were actually going to introduce an optimization to
> automatically freelist the builders, which would have possibly lead to data
> corruption for people who tried to clear and reuse builders illegally. We
> ended up giving up on the optimization for other reasons.
>
>
>
> > Person.Builder builder = Person.newBuilder();
> > for(...) {
> >  builder.clear();
> >  builder.setFname(...);
> >  builder.setLName(...);
> >  builder.setEmail(...)
> >  myResponseBuilder.addPerson(builder.build());
> > }
>
> > This is a bit more efficient since you're only creating one new object
> > per iteration instead of two.  If you're creating a lot of these
> > objects or this loop is in a critical path, this could be a decent
> > speedup.
>
> > On Dec 11, 12:35 pm, Programmer 09 <macster2...@gmail.com> wrote:
> > > I am new to ProtocolBuffer and wanted to verify that I am doing the
> > > right thing here:
>
> > > I have  proto definitions as:
>
> > > Person {
> > >   required string fname =1;
> > >   required string lname = 2;
> > >   required string email = 3;
>
> > > }
>
> > > MyResponse {
> > >    repeated Person persons = 1;
>
> > > }
>
> > > What is the most effecient way to generate a myResponse with 100
> > > persons? Is this effecieint?
>
> > > // assume I have a array of hashmap of person data.
> > > // there is the myResponseBuilder which is a builder for MyResponse.
>
> > > for (int i = 0; i < 100; i++)
> > >    Person.Builder personBuilder = Person.newBuilder();
> > >    personBuilder.setFname(nameFromMap);
> > >    personBuilder.setLname(nameFromMap);
> > >    personBuilder.setEmail(emailFromMap);
>
> > >    myResponseBuilder.addPerson(personBuilder);
>
> > > }
>
> > > Is this the right way to do this? Or is there a better effecient way
> > > instead of creating a builder for each person data? Any pointers
> > > appreciated! Thanks!
>
> > --
>
> > You received this message because you are subscribed to the Google Groups
> > "Protocol Buffers" group.
> > To post to this group, send email to proto...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/protobuf?hl=en.

--

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


Reply via email to