On Jun 22, 3:04 pm, Evan Jones <ev...@mit.edu> wrote:
> On Jun 22, 2010, at 15:35 , sheila miguez wrote:
> > I've got a servlet filter which wraps the HttpServletResponse. So, the
> > servlet response's output stream, which is wrapped in a stream from
> > the lzo library, is compressing data as it is getting written to.
> Ah, so the best case is probably message.writeTo(servletOutputStream)  
> If you are writing multiple messages, you'll probably want to  
> explicitly create a single CodedOutputStream to write all of them.
> If you experiment with this and find something different, I would be  
> interested to know.
> Evan
> --
> Evan Joneshttp://evanjones.ca/

Evan, thatnks for the great tip about using CodedOutputStream for the
writing of protobuf into a compressible stream.
When calling a .toByteArray() method and then writing it to a
CompressionOutputStream, it takes 396,078,181 ns to compress 112,178
When I use .writeTo(...) and pass it a CompressionOutputStream as an
input, it takes only 38,226,661 ns to compress 112,178 bytes.

So its almost a 10x reduction, which is GREAT!!!

Now I'm trying to figure out how I can speed up the decompression on
the receiving side.

What I have right now is:
  * Take the CompressionInputStream, convert it into a byte[]
  * Take the resulting byte[] and do .parseFrom(byte[])

This seems to be a faster route, then just
doing .parseFrom(CompressionInputStream).
10,404 bytes of compressed payload takes 181,643,533 ns to decompress
and convert into a proto message
using .parseFrom(CompressionInputStream).
10,404 bytes of compressed payload takes only 155,264,303 ns, when
first I create a byte[] and then pass it into .parseFrom(byte[]) on
the message.

Any thoughts on how this can be (if possible at all) made even
faster?! :)


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 
For more options, visit this group at 

Reply via email to