<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: AMF Serialization (followup Faster Serialization)</title>
	<atom:link href="http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/</link>
	<description>another useless blog, virtually noone is going to read....</description>
	<lastBuildDate>Tue, 01 Mar 2011 17:10:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
	<item>
		<title>By: Uwe Schaefer</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-345</link>
		<dc:creator>Uwe Schaefer</dc:creator>
		<pubDate>Sat, 27 Nov 2010 10:25:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-345</guid>
		<description>Thanks for telling. This sound pretty serious.</description>
		<content:encoded><![CDATA[<p>Thanks for telling. This sound pretty serious.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Java Serialization &#171; Knowledge Networks</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-344</link>
		<dc:creator>Java Serialization &#171; Knowledge Networks</dc:creator>
		<pubDate>Sat, 27 Nov 2010 08:56:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-344</guid>
		<description>[...] It is better to use a framework like Kryo, which provides much better performance EDIT: There seem to be some issues with Kryo: mainly, (1) objects appearing multiple times in the object graph are serialized once for every occurence and (2) Kryo requires a no-args constructor to be present in the class (see this blog post). [...]</description>
		<content:encoded><![CDATA[<p>[...] It is better to use a framework like Kryo, which provides much better performance EDIT: There seem to be some issues with Kryo: mainly, (1) objects appearing multiple times in the object graph are serialized once for every occurence and (2) Kryo requires a no-args constructor to be present in the class (see this blog post). [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Uwe Schaefer</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-202</link>
		<dc:creator>Uwe Schaefer</dc:creator>
		<pubDate>Sun, 16 May 2010 08:53:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-202</guid>
		<description>thanks for sharing. the cycle issue though is a showstopper for me.</description>
		<content:encoded><![CDATA[<p>thanks for sharing. the cycle issue though is a showstopper for me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Vincent Leroy</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-201</link>
		<dc:creator>Jean-Vincent Leroy</dc:creator>
		<pubDate>Sun, 16 May 2010 02:35:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-201</guid>
		<description>I forgot to specify that i used Jackson for Json :)</description>
		<content:encoded><![CDATA[<p>I forgot to specify that i used Jackson for Json <img src='http://www.codesmell.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Vincent Leroy</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-200</link>
		<dc:creator>Jean-Vincent Leroy</dc:creator>
		<pubDate>Sun, 16 May 2010 02:34:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-200</guid>
		<description>Actually, for my needs, Kryo performances are better (for size and time consuming) than all other serializer i used for tests.

But my scenario is very simple, small simples beans, which i can preregister and without cycles.

For example, here is my results for execution with 4 threads (for a 4-core processor)

Plain : 3551 bytes
Gzip Plain : 1333 bytes
[Norm-deserializeWithCompression      ] Call(s): 4001, Total(ms): 1245, Avg(ms): 0.312, Median(ms): 0.283, Max(ms):  7.62, Min(ms): 0.265
[Norm-deserializeWithoutCompression   ] Call(s): 4001, Total(ms): 1067, Avg(ms): 0.267, Median(ms): 0.237, Max(ms): 16.11, Min(ms): 0.222
[Norm-serializeWithCompression        ] Call(s): 4016, Total(ms): 1085, Avg(ms): 0.271, Median(ms): 0.262, Max(ms):  5.90, Min(ms): 0.221
[Norm-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  389, Avg(ms): 0.097, Median(ms): 0.088, Max(ms):  6.45, Min(ms): 0.082

Hessian : 2001 bytes
Gzip Hessian : 871 bytes
[Hess-deserializeWithCompression      ] Call(s): 4001, Total(ms):  747, Avg(ms): 0.187, Median(ms): 0.177, Max(ms):  6.97, Min(ms): 0.160
[Hess-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  612, Avg(ms): 0.153, Median(ms): 0.146, Max(ms):  3.24, Min(ms): 0.130
[Hess-serializeWithCompression        ] Call(s): 4016, Total(ms):  640, Avg(ms): 0.160, Median(ms): 0.158, Max(ms):  3.76, Min(ms): 0.118
[Hess-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  189, Avg(ms): 0.047, Median(ms): 0.040, Max(ms):  2.65, Min(ms): 0.036

Json : 1839 bytes
Gzip json : 707 bytes
[JSon-deserializeWithCompression      ] Call(s): 4001, Total(ms):  347, Avg(ms): 0.087, Median(ms): 0.070, Max(ms):  8.75, Min(ms): 0.061
[JSon-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  211, Avg(ms): 0.053, Median(ms): 0.038, Max(ms):  8.81, Min(ms): 0.035
[JSon-serializeWithCompression        ] Call(s): 4016, Total(ms):  567, Avg(ms): 0.142, Median(ms): 0.139, Max(ms):  3.84, Min(ms): 0.101
[JSon-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  176, Avg(ms): 0.044, Median(ms): 0.032, Max(ms): 13.73, Min(ms): 0.028

XmlBean : 1078 bytes
Gzip XmlBean : 511 bytes
[XmlB-deserializeWithCompression      ] Call(s): 4001, Total(ms):  362, Avg(ms): 0.091, Median(ms): 0.078, Max(ms):  5.20, Min(ms): 0.070
[XmlB-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  263, Avg(ms): 0.066, Median(ms): 0.053, Max(ms):  4.12, Min(ms): 0.049
[XmlB-serializeWithCompression        ] Call(s): 4016, Total(ms):  689, Avg(ms): 0.172, Median(ms): 0.137, Max(ms): 33.76, Min(ms): 0.096
[XmlB-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  259, Avg(ms): 0.065, Median(ms): 0.043, Max(ms): 30.57, Min(ms): 0.037

Kryo : 761 bytes
Gzip Kryo : 371 bytes
[Kryo-deserializeWithCompression      ] Call(s): 4001, Total(ms):  190, Avg(ms): 0.047, Median(ms): 0.043, Max(ms):  4.22, Min(ms): 0.036
[Kryo-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  106, Avg(ms): 0.026, Median(ms): 0.021, Max(ms):  4.39, Min(ms): 0.019
[Kryo-serializeWithCompression        ] Call(s): 4016, Total(ms):  395, Avg(ms): 0.099, Median(ms): 0.099, Max(ms):  3.68, Min(ms): 0.065
[Kryo-serializeWithoutCompression     ] Call(s): 4016, Total(ms):   89, Avg(ms): 0.022, Median(ms): 0.020, Max(ms):  3.22, Min(ms): 0.017</description>
		<content:encoded><![CDATA[<p>Actually, for my needs, Kryo performances are better (for size and time consuming) than all other serializer i used for tests.</p>
<p>But my scenario is very simple, small simples beans, which i can preregister and without cycles.</p>
<p>For example, here is my results for execution with 4 threads (for a 4-core processor)</p>
<p>Plain : 3551 bytes<br />
Gzip Plain : 1333 bytes<br />
[Norm-deserializeWithCompression      ] Call(s): 4001, Total(ms): 1245, Avg(ms): 0.312, Median(ms): 0.283, Max(ms):  7.62, Min(ms): 0.265<br />
[Norm-deserializeWithoutCompression   ] Call(s): 4001, Total(ms): 1067, Avg(ms): 0.267, Median(ms): 0.237, Max(ms): 16.11, Min(ms): 0.222<br />
[Norm-serializeWithCompression        ] Call(s): 4016, Total(ms): 1085, Avg(ms): 0.271, Median(ms): 0.262, Max(ms):  5.90, Min(ms): 0.221<br />
[Norm-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  389, Avg(ms): 0.097, Median(ms): 0.088, Max(ms):  6.45, Min(ms): 0.082</p>
<p>Hessian : 2001 bytes<br />
Gzip Hessian : 871 bytes<br />
[Hess-deserializeWithCompression      ] Call(s): 4001, Total(ms):  747, Avg(ms): 0.187, Median(ms): 0.177, Max(ms):  6.97, Min(ms): 0.160<br />
[Hess-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  612, Avg(ms): 0.153, Median(ms): 0.146, Max(ms):  3.24, Min(ms): 0.130<br />
[Hess-serializeWithCompression        ] Call(s): 4016, Total(ms):  640, Avg(ms): 0.160, Median(ms): 0.158, Max(ms):  3.76, Min(ms): 0.118<br />
[Hess-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  189, Avg(ms): 0.047, Median(ms): 0.040, Max(ms):  2.65, Min(ms): 0.036</p>
<p>Json : 1839 bytes<br />
Gzip json : 707 bytes<br />
[JSon-deserializeWithCompression      ] Call(s): 4001, Total(ms):  347, Avg(ms): 0.087, Median(ms): 0.070, Max(ms):  8.75, Min(ms): 0.061<br />
[JSon-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  211, Avg(ms): 0.053, Median(ms): 0.038, Max(ms):  8.81, Min(ms): 0.035<br />
[JSon-serializeWithCompression        ] Call(s): 4016, Total(ms):  567, Avg(ms): 0.142, Median(ms): 0.139, Max(ms):  3.84, Min(ms): 0.101<br />
[JSon-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  176, Avg(ms): 0.044, Median(ms): 0.032, Max(ms): 13.73, Min(ms): 0.028</p>
<p>XmlBean : 1078 bytes<br />
Gzip XmlBean : 511 bytes<br />
[XmlB-deserializeWithCompression      ] Call(s): 4001, Total(ms):  362, Avg(ms): 0.091, Median(ms): 0.078, Max(ms):  5.20, Min(ms): 0.070<br />
[XmlB-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  263, Avg(ms): 0.066, Median(ms): 0.053, Max(ms):  4.12, Min(ms): 0.049<br />
[XmlB-serializeWithCompression        ] Call(s): 4016, Total(ms):  689, Avg(ms): 0.172, Median(ms): 0.137, Max(ms): 33.76, Min(ms): 0.096<br />
[XmlB-serializeWithoutCompression     ] Call(s): 4016, Total(ms):  259, Avg(ms): 0.065, Median(ms): 0.043, Max(ms): 30.57, Min(ms): 0.037</p>
<p>Kryo : 761 bytes<br />
Gzip Kryo : 371 bytes<br />
[Kryo-deserializeWithCompression      ] Call(s): 4001, Total(ms):  190, Avg(ms): 0.047, Median(ms): 0.043, Max(ms):  4.22, Min(ms): 0.036<br />
[Kryo-deserializeWithoutCompression   ] Call(s): 4001, Total(ms):  106, Avg(ms): 0.026, Median(ms): 0.021, Max(ms):  4.39, Min(ms): 0.019<br />
[Kryo-serializeWithCompression        ] Call(s): 4016, Total(ms):  395, Avg(ms): 0.099, Median(ms): 0.099, Max(ms):  3.68, Min(ms): 0.065<br />
[Kryo-serializeWithoutCompression     ] Call(s): 4016, Total(ms):   89, Avg(ms): 0.022, Median(ms): 0.020, Max(ms):  3.22, Min(ms): 0.017</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Uwe Schaefer</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-193</link>
		<dc:creator>Uwe Schaefer</dc:creator>
		<pubDate>Sun, 25 Apr 2010 16:37:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-193</guid>
		<description>really wonder how these guys do their benchmarks...</description>
		<content:encoded><![CDATA[<p>really wonder how these guys do their benchmarks&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Uwe Schaefer</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-192</link>
		<dc:creator>Uwe Schaefer</dc:creator>
		<pubDate>Sun, 25 Apr 2010 16:36:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-192</guid>
		<description>thanks for pointing me to it.

even if i preregister all classes involved (which is not possible in my usecase), the performance as well as size is way less than impressive:
&lt;code&gt;
PlainSerializer: 1097ms (Size: 699312 bytes) 
PlainSerializer: 1045ms (Size: 699312 bytes) 
PlainSerializer: 1028ms (Size: 699312 bytes) 
PlainSerializer: 1024ms (Size: 699312 bytes) 
PlainGZipSerializer: 1425ms (Size: 306747 bytes) 
PlainGZipSerializer: 1429ms (Size: 306747 bytes) 
PlainGZipSerializer: 1419ms (Size: 306747 bytes) 
PlainGZipSerializer: 1415ms (Size: 306747 bytes) 
[GC 139776K-&gt;13496K(506816K), 0.0306478 secs]
KryoSerializer: 1404ms (Size: 1648909 bytes) 
KryoSerializer: 1818ms (Size: 1648909 bytes) 
[GC 150014K-&gt;3265K(506816K), 0.0071186 secs]
KryoSerializer: 1762ms (Size: 1648909 bytes) 
[GC 143041K-&gt;14697K(506816K), 0.0179855 secs]
KryoSerializer: 1339ms (Size: 1648909 bytes) 
&lt;/code&gt;

looks like there are a bunch of in-transit objects being created and collected. apart from that, Kryo does not work without no-arg constructors.

but the real showstopper in fact is: it does not seem to recognize duplicate references, so that plain serialization with just 700k is much more attractive than using kyro that turns the data (just lists, maps and strings) into 1.6mb.

not appealing.</description>
		<content:encoded><![CDATA[<p>thanks for pointing me to it.</p>
<p>even if i preregister all classes involved (which is not possible in my usecase), the performance as well as size is way less than impressive:<br />
<code><br />
PlainSerializer: 1097ms (Size: 699312 bytes)<br />
PlainSerializer: 1045ms (Size: 699312 bytes)<br />
PlainSerializer: 1028ms (Size: 699312 bytes)<br />
PlainSerializer: 1024ms (Size: 699312 bytes)<br />
PlainGZipSerializer: 1425ms (Size: 306747 bytes)<br />
PlainGZipSerializer: 1429ms (Size: 306747 bytes)<br />
PlainGZipSerializer: 1419ms (Size: 306747 bytes)<br />
PlainGZipSerializer: 1415ms (Size: 306747 bytes)<br />
[GC 139776K->13496K(506816K), 0.0306478 secs]<br />
KryoSerializer: 1404ms (Size: 1648909 bytes)<br />
KryoSerializer: 1818ms (Size: 1648909 bytes)<br />
[GC 150014K->3265K(506816K), 0.0071186 secs]<br />
KryoSerializer: 1762ms (Size: 1648909 bytes)<br />
[GC 143041K->14697K(506816K), 0.0179855 secs]<br />
KryoSerializer: 1339ms (Size: 1648909 bytes)<br />
</code></p>
<p>looks like there are a bunch of in-transit objects being created and collected. apart from that, Kryo does not work without no-arg constructors.</p>
<p>but the real showstopper in fact is: it does not seem to recognize duplicate references, so that plain serialization with just 700k is much more attractive than using kyro that turns the data (just lists, maps and strings) into 1.6mb.</p>
<p>not appealing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Vincent Leroy</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-179</link>
		<dc:creator>Jean-Vincent Leroy</dc:creator>
		<pubDate>Fri, 23 Apr 2010 16:07:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-179</guid>
		<description>You have to test java kryo.

http://code.google.com/p/kryo/

Performance are better, and it&#039;s free :)</description>
		<content:encoded><![CDATA[<p>You have to test java kryo.</p>
<p><a href="http://code.google.com/p/kryo/" rel="nofollow">http://code.google.com/p/kryo/</a></p>
<p>Performance are better, and it&#8217;s free <img src='http://www.codesmell.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Vincent Leroy</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-106</link>
		<dc:creator>Jean-Vincent Leroy</dc:creator>
		<pubDate>Thu, 07 Jan 2010 00:08:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-106</guid>
		<description>Yes me too ... But it can usefull when serialization is critical, as it could be in financial company for example.</description>
		<content:encoded><![CDATA[<p>Yes me too &#8230; But it can usefull when serialization is critical, as it could be in financial company for example.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Uwe Schaefer</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-105</link>
		<dc:creator>Uwe Schaefer</dc:creator>
		<pubDate>Wed, 06 Jan 2010 23:52:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-105</guid>
		<description>sadly, i´ll not be provided with the necessary monetary resources, just for the sake of serialization. :-D</description>
		<content:encoded><![CDATA[<p>sadly, i´ll not be provided with the necessary monetary resources, just for the sake of serialization. <img src='http://www.codesmell.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Vincent Leroy</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-104</link>
		<dc:creator>Jean-Vincent Leroy</dc:creator>
		<pubDate>Wed, 06 Jan 2010 23:43:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-104</guid>
		<description>For the moment, i&#039;m doing some tests.
But you&#039;re right :

LICENSE RIGHTS 
We grant you a nonexclusive, nontransferable limited license to use the programs only for the purpose of developing, testing, prototyping and demonstrating your application, and not for any other purpose. If you use the application you develop under this license for any internal data processing or for any commercial or production purposes, or you want to use the programs for any purpose other than as permitted under this agreement, you must obtain a production release version of the program by contacting us or an Oracle reseller to obtain the appropriate license. You acknowledge that we may not produce a production release version of the program and any development efforts undertaken by you are at your own risk. We may audit your use of the programs. Program documentation, if available, may accessed online at http://otn.oracle.com/docs.</description>
		<content:encoded><![CDATA[<p>For the moment, i&#8217;m doing some tests.<br />
But you&#8217;re right :</p>
<p>LICENSE RIGHTS<br />
We grant you a nonexclusive, nontransferable limited license to use the programs only for the purpose of developing, testing, prototyping and demonstrating your application, and not for any other purpose. If you use the application you develop under this license for any internal data processing or for any commercial or production purposes, or you want to use the programs for any purpose other than as permitted under this agreement, you must obtain a production release version of the program by contacting us or an Oracle reseller to obtain the appropriate license. You acknowledge that we may not produce a production release version of the program and any development efforts undertaken by you are at your own risk. We may audit your use of the programs. Program documentation, if available, may accessed online at <a href="http://otn.oracle.com/docs" rel="nofollow">http://otn.oracle.com/docs</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Uwe Schaefer</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-103</link>
		<dc:creator>Uwe Schaefer</dc:creator>
		<pubDate>Wed, 06 Jan 2010 21:11:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-103</guid>
		<description>while it sounds interesting, i´d need to be a proud owner of a coherence license, right?</description>
		<content:encoded><![CDATA[<p>while it sounds interesting, i´d need to be a proud owner of a coherence license, right?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Vincent Leroy</title>
		<link>http://www.codesmell.org/blog/2009/09/amf-serialization-followup-faster-serialization/comment-page-1/#comment-102</link>
		<dc:creator>Jean-Vincent Leroy</dc:creator>
		<pubDate>Wed, 06 Jan 2010 20:38:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.codesmell.org/blog/?p=2913#comment-102</guid>
		<description>If you are always looking possible solutions for this problem, maybe you can look at :

http://wiki.tangosol.com/pages/viewpage.action?pageId=1343618

I&#039;m currently making tests with their solution for my needs.</description>
		<content:encoded><![CDATA[<p>If you are always looking possible solutions for this problem, maybe you can look at :</p>
<p><a href="http://wiki.tangosol.com/pages/viewpage.action?pageId=1343618" rel="nofollow">http://wiki.tangosol.com/pages/viewpage.action?pageId=1343618</a></p>
<p>I&#8217;m currently making tests with their solution for my needs.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

