This commit is contained in:
68
article_convert.html
Normal file
68
article_convert.html
Normal file
@@ -0,0 +1,68 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Redkale(红菜苔)--基于Java 8全新的微服务开源框架 - Redkale官网</title>
|
||||
<meta name="keywords" content="Redkale,redkale,java,微服务,架构"/>
|
||||
<meta name="description" content="Redkale(红菜苔)是基于Java 8全新的微服务开源框架"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
|
||||
</head>
|
||||
<body>
|
||||
<section class="page-header">
|
||||
<a href="index.html" class="project-name">Redkale</a>
|
||||
<h2 class="project-tagline"></h2>
|
||||
<a href="redkale.html" class="btn">Redkale 入门</a>
|
||||
<a href="convert.html" class="btn">Convert 组件</a>
|
||||
<a href="service.html" class="btn">Service 组件</a>
|
||||
<a href="source.html" class="btn">Source 组件</a>
|
||||
<a href="net.html" class="btn">Net 组件</a>
|
||||
<a href="watch.html" class="btn">Watch 组件</a>
|
||||
<a href="articles.html" class="btn">技术文章</a>
|
||||
<a href="code.html" class="btn">Java 源码</a>
|
||||
</section>
|
||||
|
||||
<section class="main-content">
|
||||
<h3>Redkale 技术详解 03 -- Convert高性能序列化</h3>
|
||||
|
||||
<p>
|
||||
<a href="/convert.html" target="_blank">Convert</a>是个重复造轮子的组件,却是个飞速的轮子。Redkale之所以重复造轮子主要追求性能和需要与网络数据的序列化很好的结合(<a href="/convert.html#json_net_bytebuffer" target="_blank">Convert与ByteBuffer的结合</a>)。 Convert在API设计思路上也与其他同类型的框架不一样,配置与序列化方法是分开的,大部分场景下配置项是固定的,因此不同的配置会动态生成对应的处理类以保证性能。
|
||||
</p>
|
||||
<p>
|
||||
从包结构可以看出,Convert分三层:序列化与反序列化的抽象基础包;JSON包、BSON包。即使boolean、int、String这种基础数据类型都不是包含在Convert基础包中。以下是详细的结构图:
|
||||
</p>
|
||||
<p style="text-align: center;"><img src="images/convertimg_1.png" alt=""/></p>
|
||||
<p>
|
||||
从上图可以看出,JSON与BSON是Convert基础包的实现,主要是实现Reader与Writer类。若需要实现XML格式的序列化,可以以JSON为参考自己编写。对于不是内置(ext子包下的数据类型)的且没有自定义处理(Encoder、Decoder)的数据类型, Convert会动态生成ObjectEncoder、ObjectDecoder对象。
|
||||
</p>
|
||||
<p>Convert 的性能</p>
|
||||
<p>
|
||||
一切不谈性能的框架都是在耍流氓!下面以JSON为例,与其他主流的JSON框架做个简单的性能比较(测试环境: DELL的普通笔记本),fastjson一直号称是Java性能最好的JSON解析框架,其使用Benchmark是 <a href="https://github.com/eishay/jvm-serializers/wiki" target="_blank">https://github.com/eishay/jvm-serializers/wiki</a>,Redkale根据该数据编写了<a href="https://github.com/redkale/redkale/tree/master/src/test/java/org/redkale/test/convert/media" target="_blank">MediaContent</a>类。实例由MediaContent.createDefault()方法所得。
|
||||
</p>
|
||||
<p style="text-align: center;"><img src="images/convertimg_2.png" alt=""/></p>
|
||||
<p>
|
||||
由上图第一份报告看出,以MediaContent对象进行比较,fastjson的反序列化性能是最好的,gson性能最差。redkale、fastjson、jackson在序列化方面差距不大。第二份报告的测试对象是将第一份的MediaContent对象中所有的数值改成负数进行测试的,可以看出fastjson对于负数的处理性能很差,只是比gson稍强。第三份报告的测试对象是<a href="https://github.com/redkale/redkale/blob/master/src/test/java/org/redkale/test/convert/ConvertRecord.java" target="_blank">ConvertRecord</a>对象,该对象的特点是包含int[]、long[]、List、Map数据。从结果可以看出fastjson的反序列化性能最差。redkale与jackson一直保持高性能。<br/>
|
||||
综合起来看,Redkale的Convert性能是最好的。数据相差50毫秒以下的差距基本可以忽略,因为每次测试的结果会上下波动几十毫秒。
|
||||
</p>
|
||||
<br/>
|
||||
<p>
|
||||
转载请注明出处:<a href="http://redkale.org/article_convert.html" target="_blank">http://redkale.org/article_convert.html</a>
|
||||
</p>
|
||||
|
||||
<footer class="site-footer">
|
||||
<span class="site-footer-owner"> 欢迎加入Redkale QQ群: 527523235</span>
|
||||
</footer>
|
||||
|
||||
</section>
|
||||
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function () {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "//hm.baidu.com/hm.js?b4e05d7de8b5f3401dd93e3c6b35ffa5";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -36,6 +36,12 @@
|
||||
<label class="art-desc">org.redkale.util.Creator是采用ASM技术来实现代替反射构造函数的对象构建类。</label>
|
||||
</p>
|
||||
|
||||
<p class="art-list">
|
||||
<a href="article_convert.html" target="_blank" class="art-title">Redkale 技术详解 03 -- Convert高性能序列化</a>
|
||||
<label class="art-date">2016-03</label><br/>
|
||||
<label class="art-desc">Convert是个重复造轮子的组件,却是个飞速的轮子。</label>
|
||||
</p>
|
||||
|
||||
|
||||
<br/>
|
||||
<footer class="site-footer">
|
||||
|
||||
BIN
images/convertimg_2.png
Normal file
BIN
images/convertimg_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
Reference in New Issue
Block a user