<br><div class="gmail_quote">On Wed, Mar 18, 2009 at 10:25 PM, Ceki Gulcu <span dir="ltr">&lt;ceki@qos.ch&gt;</span> wrote:<br><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Are you using the standard corpus with 50&#39;000? If so, 12MB for 50&#39;000 elements translates to about 240 bytes per message which is pretty good. The CPU times, e.g. 1883 ms, are fantastic.</blockquote><div><br>yep,<br>
<br>ILoggingEvent[] eventArray = Corpus.makeStandardCorpus(); <br><br>    for (int i=0; i&lt;10; i++) {<br>      ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(&quot;/tmp/logback-java.ser.&quot; + i));<br>
      OutputStream os = new BufferedOutputStream(new FileOutputStream(&quot;/tmp/logback-protobuf.ser&quot; + i));<br>      GZIPOutputStream gos = new GZIPOutputStream(new FileOutputStream(&quot;/tmp/logback-proto.&quot; + i + &quot;.gz&quot;), 8000);<br>
      <br>      DeflaterOutputStream dos = new DeflaterOutputStream(<br>          new FileOutputStream(&quot;/tmp/logback-protobuf.def.&quot; + i),<br>          new Deflater(Deflater.BEST_SPEED));<br><br>      serialize(eventArray, oos);<br>
      serializeWithProtobuf(&quot;normal&quot;, eventArray, os);<br>      serializeWithProtobuf(&quot;gzip  &quot;, eventArray, gos);<br>      serializeWithProtobuf(&quot;def   &quot;, eventArray, dos);<br>      oos.close();<br>
      os.close();<br>      gos.close();      <br>    }<br><br>Still have to create a multi-threaded test, but I suspect it won&#39;t make much difference.<br><br>Maarten<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
Maarten Bosteels wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5">
Hi Ceki,<br>
<br>
Keep in mind that I still have to double check my LoggingEvent-to-protobuf converter.<br>
<br>
Serializing the corpus with different formats:<br>
java serialization Â  =&gt; 16 MB Â (16108602) Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  protobuf Â  Â  Â  Â  Â  Â  Â  Â =&gt; 33 MB Â (34385867 bytes)<br>
protobuf + gzip Â  Â  Â =&gt; 9.9 MB Â (10354646 bytes)<br>
protbuf + deflater Â  =&gt; Â 12 MB Â (12006206 bytes)<br>
<br>
speed:<br>
<br>
java serialization: Â  Â 4330 ms<br>
protobuf Â  Â  Â  Â  Â  Â  Â  Â  Â  928 ms<br>
protobuf + gzip Â  Â  Â  3146 ms protobuf + deflater Â 1883 ms<br>
<br>
So I would choose for protobuf + deflater : Â 25% smaller than java serilaization and twice as fast.<br>
<br>
Deflater means using Â java.util.zip.Deflater.BEST_SPEED<br>
<br>
regards,<br>
Maarten<br>
<br>
<br>
On Wed, Mar 18, 2009 at 9:49 PM, Ceki Gulcu &lt;ceki@qos.ch&gt; wrote:<br>
<br>
<br>
 Â  Â Hello Maarten,<br>
<br>
 Â  Â It&#39;s interesting to learn that protobuf is faster than plain old<br>
 Â  Â java serialization. Thanks.<br>
<br>
 Â  Â How about the size of the stored data? How many bytes does a logging<br>
 Â  Â event use on average?<br>
<br>
 Â  Â Maarten Bosteels wrote:<br>
<br>
 Â  Â  Â  Â Hi,<br>
<br>
 Â  Â  Â  Â No objections at all.<br>
<br>
 Â  Â  Â  Â Looking at my .proto file it&#39;s indeed pretty obvious that<br>
 Â  Â  Â  Â CallerData and StackTraceElement are quite similar :-)<br>
 Â  Â  Â  Â <a href="http://code.google.com/p/firewood/source/browse/trunk/compare-formats/src/main/java/com/googlecode/firewood/protobuf/logging.proto" target="_blank">http://code.google.com/p/firewood/source/browse/trunk/compare-formats/src/main/java/com/googlecode/firewood/protobuf/logging.proto</a><br>

<br>
 Â  Â  Â  Â I&#39;ve done some benchmarking with protobuf (using the Corpus),<br>
 Â  Â  Â  Â and it seems to be at least 4 times faster than Java serialization.<br>
 Â  Â  Â  Â Will soon post the results and the code.<br>
<br>
 Â  Â  Â  Â regards,<br>
 Â  Â  Â  Â Maarten<br>
<br>
<br>
 Â  Â --  Â  Â Ceki Gülcü<br>
 Â  Â Logback: The reliable, generic, fast and flexible logging framework<br>
 Â  Â for Java.<br>
 Â  Â <a href="http://logback.qos.ch" target="_blank">http://logback.qos.ch</a><br>
 Â  Â _______________________________________________<br>
 Â  Â logback-dev mailing list<br>
 Â  Â logback-dev@qos.ch<br>
 Â  Â <a href="http://qos.ch/mailman/listinfo/logback-dev" target="_blank">http://qos.ch/mailman/listinfo/logback-dev</a><br>
<br>
<br>
<br></div></div>
------------------------------------------------------------------------<div class="im"><br>
<br>
_______________________________________________<br>
logback-dev mailing list<br>
logback-dev@qos.ch<br>
<a href="http://qos.ch/mailman/listinfo/logback-dev" target="_blank">http://qos.ch/mailman/listinfo/logback-dev</a><br>
</div></blockquote><div><div></div><div class="h5">
<br>
-- <br>
Ceki Gülcü<br>
Logback: The reliable, generic, fast and flexible logging framework for Java.<br>
<a href="http://logback.qos.ch" target="_blank">http://logback.qos.ch</a><br>
_______________________________________________<br>
logback-dev mailing list<br>
logback-dev@qos.ch<br>
<a href="http://qos.ch/mailman/listinfo/logback-dev" target="_blank">http://qos.ch/mailman/listinfo/logback-dev</a><br>
</div></div></blockquote></div><br>