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.comprotobuf%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.