Oh, I didn't even know you were including composition in there. My benchmarks are only for serialization of already-composed messages. But this still doesn't tell us how much time is spent on network I/O vs. protobuf serialization. My guess is that once you factor that out, your performance is pretty close to the benchmarks.
On Mon, Jul 13, 2009 at 10:11 PM, Alex Black <a...@alexblack.ca> wrote: > > If I comment out the actual serialization and sending of the message > (so I am just composing messages, and clearing them each batch) then > the 100ms drops to about 50ms. > > On Jul 14, 12:36 am, Alex Black <a...@alexblack.ca> wrote: > > I'm sending a message with about ~150k repeated items in it, total > > size is about 3.3mb, and its taking me about 100ms to serialize it and > > send it out. > > > > Can I expect to do any better than this? What could I look into to > > improve this? > > - I have "option optimize_for = SPEED;" set in my proto file > > - I'm compiling with -O3 > > - I'm sending my message in batches of 1000 > > - I'm using C++, on ubuntu, x64 > > - I'm testing all on one machine (e.g. client and server are on one > > machine) > > > > My message looks like: > > > > message NodeWithNeighbors > > { > > required Id nodeId = 1; > > repeated IdConfidence neighbors = 2; > > > > } > > > > message GetNeighborsResponse > > { > > repeated NodeWithNeighbors nodesWithNeighbors = 1; > > > > } > > > > message IdConfidence > > { > > required bytes id = 1; > > required float confidence = 2; > > > > } > > > > Where "bytes id" is used to send 16byte IDs (uuids). > > > > I'm writing each message (batch) out like this: > > > > CodedOutputStream codedOutputStream(&m_ProtoBufStream); > > > > // Write out the size of the message > > codedOutputStream.WriteVarint32(message.ByteSize()); > > // Ask the message to serialize itself to our stream adapter, > which > > ultimately calls Write on us > > // which we then call Write on our composed stream > > message.SerializeWithCachedSizes(&codedOutputStream); > > > > In my stream implementation I'm buffering every 16kb, and calling send > > on the socket once i have 16kb. > > > > Thanks! > > > > - Alex > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@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 -~----------~----~----~----~------~----~------~--~---