2019独角兽企业重金招聘Python工程师标准>>>

Convert是个重复造轮子的组件,却是个飞速的轮子。Redkale之所以重复造轮子主要追求性能和需要与网络数据的序列化很好的结合(Convert与ByteBuffer的结合)。 Convert在API设计思路上也与其他同类型的框架不一样,配置与序列化方法是分开的,大部分场景下配置项是固定的,因此不同的配置会动态生成对应的处理类以保证性能。

从包结构可以看出,Convert分三层:序列化与反序列化的抽象基础包;JSON包、BSON包。即使boolean、int、String这种基础数据类型都不是包含在Convert基础包中。以下是详细的结构图:

从上图可以看出,JSON与BSON是Convert基础包的实现,主要是实现Reader与Writer类。若需要实现XML格式的序列化,可以以JSON为参考自己编写。对于不是内置(ext子包下的数据类型)的且没有自定义处理(Encoder、Decoder)的数据类型, Convert会动态生成ObjectEncoder、ObjectDecoder对象。

Convert 的性能

一切不谈性能的框架都是在耍流氓!下面以JSON为例,与其他主流的JSON框架做个简单的性能比较(测试环境: DELL的普通笔记本),fastjson一直号称是Java性能最好的JSON解析框架,其使用Benchmark是 https://github.com/eishay/jvm-serializers/wiki,Redkale根据该数据编写了MediaContent类。实例由MediaContent.createDefault()方法所得。

由上图第一份报告看出,以MediaContent对象进行比较,fastjson的反序列化性能是最好的,gson性能最差。redkale、fastjson、jackson在序列化方面差距不大。第二份报告的测试对象是将第一份的MediaContent对象中所有的数值改成负数进行测试的,可以看出fastjson对于负数的处理性能很差,只是比gson稍强。第三份报告的测试对象是ConvertRecord对象,该对象的特点是包含int[]、long[]、List、Map数据。从结果可以看出fastjson的反序列化性能最差。redkale与jackson一直保持高性能。
        综合起来看,Redkale的Convert性能是最好的。数据相差50毫秒以下的差距基本可以忽略,因为每次测试的结果会上下波动几十毫秒。

转载请注明出处:http://redkale.org/article_convert.html

转载于:https://my.oschina.net/redkale/blog/628555

Redkale 技术详解 03 -- Convert高性能序列化相关推荐

  1. 架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)

    一.序言 Hadoop是一个技术生态圈,zookeeper是hadoop生态圈里一个非常重要的技术,当我研究学习hadoop的相关技术时候,有两块知识曾经让我十分的困惑,一个是hbase,一个就是zo ...

  2. Hazelcast IMDG技术详解

    IMDG技术详解 用Java写的,分布式的,可以支持Java,C++,.NET,REST,Python,Go和Node.js的API.还支持Memcached和REST的协议.兼容Hibernate. ...

  3. IPv6技术详解:基本概念、应用现状、技术实践(上篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...

  4. DMA RDMA 技术详解

    DMA 技术是一个 直接内存访问技术. 在传统的linux 内存读写操作都必须经过cpu,读写寻址都是有cpu 完成的, 现在有一中技术 让数据读写完全由网卡自己完成. 这样就必须有硬件支持,及系统必 ...

  5. P2P技术详解(一):NAT详解——详细原理、P2P简介(转)

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. <P2P技术详解>系列文章 ➊ 本 ...

  6. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介

    http://www.52im.net/thread-50-1-1.html 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层 ...

  7. 阿里技术详解图册发布

    <阿里技术详解图册>,分为研发篇.算法篇两册,将为你清晰呈现阿里业务生态的全貌:文化娱乐(优酷.土豆等).核心电商业务(天猫.淘宝.村淘等).本地生活(高德地图.盒马等).支付 & ...

  8. 《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览

    本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...

  9. 实战Windows Azure:微软云计算平台技术详解

    实战Windows Azure:微软云计算平台技术详解  徐子岩 编著 ISBN978-7-121-14547-6   2011年10月出版 定价:69.00 元 16开 440页 宣传语:什么是真正 ...

最新文章

  1. python 面向对象学习
  2. 使用UltraISO为U盘或内存卡制作系统安装工具
  3. 如何在XSLT里调用C#的代码
  4. java高并发(二十一)高并发场景下缓存常见问题
  5. C#Winform程序如何发布并自动升级(图解)
  6. 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)
  7. 深度神经网络关键词解释
  8. Centos6.6安装Nginx
  9. 【Python3】【爬虫】meizituSpider
  10. mysql 调用webservice_ETL第二篇 调用webservice
  11. 工具:SQL Server软件使用指南
  12. crontrigger java_Java触发器CronTrigger
  13. 微信小程序使用font awsome图标库(最新fontawsome5)
  14. 游戏是怎么赚钱的 - 聊聊山寨与混搭
  15. linux的wifi探针源码,运用在公共安全领域的WiFi探针
  16. Java面试题之IO流分为几种?
  17. 我的七个建议 作者:Joel Spolsky
  18. 与你一起学习Microsoft Visio——精华篇:流程图规范及技巧
  19. 中勒索病毒后的正确操作姿势
  20. 一种低成本的兰吉尔电表电量采集方案

热门文章

  1. 如何估算大型项目的工作量
  2. Request.From,Request.QueryString转对象
  3. JQuery图片无限循环滚动源码
  4. HDU 1251 统计难题 字典树/STL
  5. php实现查询上传文件进度
  6. form提交后,jquery 显示 文本框选择值和下拉框选中值
  7. 再发些CSS常用技巧和兼容方案
  8. 无法安装或运行应用程序。该应用程序要求首先在“全局程序集缓存(gac)”中安装程序集system.data.entity...
  9. OpenCV Mat 简介
  10. 基于HOG-LBP特征融合的头肩检测研究