On Thu, Dec 1, 2011 at 3:22 PM, Vinay Bansal <vinsalw...@gmail.com> wrote:

>  void write() {
>    int fd = open("myfile", O_WRONLY), O_APPEND);
>    google::protobuf::io::ZeroCopyOutputStream *out = new
> google::protobuf::io::FileOutputStream(fd);
>    google::protobuf::io::GzipOutputStream *gzipOut = new
> google::protobuf::io::GzipOutputStream(out, options);
>    google::protobuf::io::CodedOutputStream *codedOut = new
> google::protobuf::io::CodedOutputStream(gzipOut);
>    codedOut->WriteVarint32(message.ByteSize());
>    message.SerializeToCodedStream(codedOut);
>    close(fd);
>  }

If you're doing that for every (small) message, then the compressor is
never going to have a good chunk of data to work with; the compression
dictionary will be reset for every message, plus a gzip header gets
written each time. (For comparison, try a command-line gzip of a file
containing only a single message - that's essentially what you're
doing here)

You want to open the file once, create one GzipOutputStream, then
write many messages to it.


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

Reply via email to