- 浏览: 697646 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
Bboss和xstream序列化/反序列化性能对比
本报告分别测试bboss和xstream的序列化和反序列化功能,测试的接口如下:
1.接口方法
Bboss序列化和反序列化方法
xStream序列化和反序列化方法
Bboss依赖的包:
bboss-aop.jar
cglib-2.2.jar
frameworkset-util.jar
log4j-1.2.14.jar
bboss-soa.jar
Xstream依赖的包:
xpp3-1.1.4c.jar
xstream-1.3.1.jar
接口基本上都非常简单。依赖的包也都非常少。
2.数据结构
测试的数据结构包含int,String,Date,Date[],Object嵌套结构,String数组,二维数组,List,Map,Set,二进制文件
3.数据规模
分为以下三种
小负荷规模-1000字节数据,
大负荷规模-47K的 xml数据
文件对象数据-文件大小47K,文件内容为xml串。
4.测试环境
所以的测试用例基于以下环境测试:
联想thinkpad sl400
OS 32位windows xp professional sp3
内存2G
cpu:
型号 Intel(R) Core(TM)2 Duo T5870
主频 2GHz
用例运行工具:myeclipse 8.0
jdk 1.5.0_06
Junit 4
5.测试用例1-小负荷测试
5.1测试数据
5.2测试结果
5.2.1序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 0毫秒 0毫秒 1002字节 753字节
10次 0毫秒 16毫秒
100次 31毫秒 78毫秒
1000次 78毫秒 218毫秒
10000次 469毫秒 1625毫秒
5.2.2反序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 0毫秒 0豪秒 1002字节 753字节
10次 47毫秒 15毫秒
100次 282毫秒 63毫秒
1000次 1250毫秒 312毫秒
10000次 9328毫秒 2344毫秒
6.测试用例2-大负荷测试
6.1测试数据
测试的对象实例字段包含了47k的xml串,本用例针对这个对象实例分别采用bboss和xstream来进行序列化和反序列化测试,并给出测试结果。
6.2测试结果
6.2.1序列化
执行次数 Bboss耗时 XStream耗时 生成的Bboss包大小 生成XStream包大小
1次 32毫秒 31毫秒 48K 78K
10次 31毫秒 94毫秒
100次 312毫秒 875毫秒
1000次 2922毫秒 8078毫秒
10000次 29141毫秒 81938毫秒
6.2.2反序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 15毫秒 46毫秒 48K 78K
10次 125毫秒 235毫秒
100次 1391毫秒 2234毫秒
1000次 12547毫秒 22781毫秒
10000次 126047毫秒 230688毫秒
7.测试用例3-File对象测试
7.1测试数据
测试的对象实例字段包含File对象,文件大小为47K,本用例针对这个对象实例分别采用bboss和xstream来进行序列化和反序列化测试,并给出测试结果。
7.2测试结果
7.2.1序列化
执行次数 Bboss耗时 XStream耗时 生成的Bboss包大小 生成XStream包大小
1次 31毫秒 无法对文件对象内容进行序列化 65K ---
10次 141毫秒 无法对文件对象内容进行序列化
100次 1609毫秒 无法对文件对象内容进行序列化
1000次 16531毫秒 无法对文件对象内容进行序列化
10000次 166641毫秒无法对文件对象内容进行序列化
7.2.2反序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 94毫秒 无法对文件对象内容进行反序列化 65K ---
10次 297毫秒 无法对文件对象内容进行反序列化
100次 2313毫秒 无法对文件对象内容进行反序列化
1000次 22375毫秒 无法对文件对象内容进行反序列化
10000次 226968毫秒无法对文件对象内容进行反序列化
8.总结
序列化
小数量的情况下,bboss比xstream要快3到4倍,bboss产生的序列化数据包比xstream略大一点。
中等数据量或者大数据量情况下bboss比xstream要快3到4倍,bboss产生的序列化数据包为48K基本接近实际数据大小,比xstream产生的包要小一半(xstream为78K)
反序列化
小数据量情况下,xstream比bboss快3-4倍
中等数据(xml数据)量或者大数据量(xml数据)情况下,bboss比xstream要快2-3倍
数据类型的支持
Bboss和xstream都提供了以下数据类型的序列化/反序列化支持:
基础数据类型;
list,map,set,数组,多维数组,枚举类型;
复杂对象类型;
异常Exception;
Date和Date[]类型
以及所有上面类型的组合嵌套类型
另外,从测试的情况来看bboss支持对文件对象类型的序列化/反序列化,而xstream不支持。
综上所述,从整体性能、产生的序列化包大小以及对数据类型支持类别三个角度来看,bboss比XStream都出色很多,尤其是在处理比较大的xml串时xstream表现非常差,从技术选型的角度上来看bboss应该是首选。
最新代码已经提交到github。
也可到以下下载地址:bbossgroups-3.5
序列化测试用例:TestSerializable
本报告分别测试bboss和xstream的序列化和反序列化功能,测试的接口如下:
1.接口方法
Bboss序列化和反序列化方法
//序列化 String xml = ObjectSerializable.toXML(joe); //反序列化 Person p = ObjectSerializable.toBean(xml, Person.class);
xStream序列化和反序列化方法
XStream xStream = new XStream(); String xmlXstream = xStream.toXML(joe); Person p = (Person)xStream.fromXML(xmlXstream);
Bboss依赖的包:
bboss-aop.jar
cglib-2.2.jar
frameworkset-util.jar
log4j-1.2.14.jar
bboss-soa.jar
Xstream依赖的包:
xpp3-1.1.4c.jar
xstream-1.3.1.jar
接口基本上都非常简单。依赖的包也都非常少。
2.数据结构
测试的数据结构包含int,String,Date,Date[],Object嵌套结构,String数组,二维数组,List,Map,Set,二进制文件
3.数据规模
分为以下三种
小负荷规模-1000字节数据,
大负荷规模-47K的 xml数据
文件对象数据-文件大小47K,文件内容为xml串。
4.测试环境
所以的测试用例基于以下环境测试:
联想thinkpad sl400
OS 32位windows xp professional sp3
内存2G
cpu:
型号 Intel(R) Core(TM)2 Duo T5870
主频 2GHz
用例运行工具:myeclipse 8.0
jdk 1.5.0_06
Junit 4
5.测试用例1-小负荷测试
5.1测试数据
PhoneNumber phone = new PhoneNumber(); phone.setCode(123); phone.setNumber("1234-456"); PhoneNumber fax = new PhoneNumber(); fax.setCode(123); fax.setNumber("<aaaa>9999-999</bbbb>"); Set dataSet = new TreeSet(); dataSet.add("aa"); dataSet.add("bb"); List dataList = new ArrayList(); dataList.add("aa"); dataList.add("bb"); Map dataMap = new HashMap(); dataMap.put("aa","aavalue"); dataMap.put("bb","bbvalue"); String[] dataArray = new String[]{"aa","bb"}; Person joe = new Person(); joe.setFirstname("Joe"); // joe.setLastname("Walnes"); //用来验证bboss和Xstream是否会按照null值传递,也就是说lastname有默认值"ssss" //这样我们手动把lastname设置为null,理论上来说反序列化后joe中的lastname应该是null而不是默认值"ssss" joe.setBirthdate(new Date()); Date[] updates = new Date[]{new Date(),new Date()}; joe.setUpdatedate(updates); joe.setLastname(null); joe.setPhone(phone); joe.setFax(fax); joe.setDataArray(dataArray); joe.setDataList(dataList); joe.setDataMap(dataMap); joe.setDataSet(dataSet);
5.2测试结果
5.2.1序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 0毫秒 0毫秒 1002字节 753字节
10次 0毫秒 16毫秒
100次 31毫秒 78毫秒
1000次 78毫秒 218毫秒
10000次 469毫秒 1625毫秒
5.2.2反序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 0毫秒 0豪秒 1002字节 753字节
10次 47毫秒 15毫秒
100次 282毫秒 63毫秒
1000次 1250毫秒 312毫秒
10000次 9328毫秒 2344毫秒
6.测试用例2-大负荷测试
6.1测试数据
测试的对象实例字段包含了47k的xml串,本用例针对这个对象实例分别采用bboss和xstream来进行序列化和反序列化测试,并给出测试结果。
//这个文件中内容有47565 字节,约47k的数据 String bigcontent = FileUtil.getFileContent(new File("D:\\workspace\\bbossgroups-3.2\\bboss-soa\\test\\org\\frameworkset\\soa\\testxstream.xml"), "GBK"); PhoneNumber phone = new PhoneNumber(); phone.setCode(123); phone.setNumber("1234-456"); PhoneNumber fax = new PhoneNumber(); fax.setCode(123); fax.setNumber(bigcontent); Set dataSet = new TreeSet(); dataSet.add("aa"); dataSet.add("bb"); List dataList = new ArrayList(); dataList.add("aa"); dataList.add("bb"); Map dataMap = new HashMap(); dataMap.put("aa","aavalue"); dataMap.put("bb","bbvalue"); String[] dataArray = new String[]{"aa","bb"}; Person joe = new Person(); joe.setFirstname("Joe"); // joe.setLastname("Walnes"); //用来验证bboss和Xstream是否会按照null值传递,也就是说lastname有默认值"ssss" //这样我们手动把lastname设置为null,理论上来说反序列化后joe中的lastname应该是null而不是默认值"ssss" joe.setLastname(null); joe.setPhone(phone); joe.setFax(fax); joe.setDataArray(dataArray); joe.setDataList(dataList); joe.setDataMap(dataMap); joe.setDataSet(dataSet);
6.2测试结果
6.2.1序列化
执行次数 Bboss耗时 XStream耗时 生成的Bboss包大小 生成XStream包大小
1次 32毫秒 31毫秒 48K 78K
10次 31毫秒 94毫秒
100次 312毫秒 875毫秒
1000次 2922毫秒 8078毫秒
10000次 29141毫秒 81938毫秒
6.2.2反序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 15毫秒 46毫秒 48K 78K
10次 125毫秒 235毫秒
100次 1391毫秒 2234毫秒
1000次 12547毫秒 22781毫秒
10000次 126047毫秒 230688毫秒
7.测试用例3-File对象测试
7.1测试数据
测试的对象实例字段包含File对象,文件大小为47K,本用例针对这个对象实例分别采用bboss和xstream来进行序列化和反序列化测试,并给出测试结果。
//这个文件中内容有47565 字节,约47k的数据 File fileData = new File("D:\\workspace\\bbossgroups-3.2\\bboss-soa\\test\\org\\frameworkset\\soa\\testxstream.xml"); PhoneNumber phone = new PhoneNumber(); phone.setCode(123); phone.setNumber("1234-456"); PhoneNumber fax = new PhoneNumber(); fax.setCode(123); fax.setNumber("<aaaa>9999-999</bbbb>"); Set dataSet = new TreeSet(); dataSet.add("aa"); dataSet.add("bb"); List dataList = new ArrayList(); dataList.add("aa"); dataList.add("bb"); Map dataMap = new HashMap(); dataMap.put("aa","aavalue"); dataMap.put("bb","bbvalue"); String[] dataArray = new String[]{"aa","bb"}; FilePerson joe = new FilePerson(); joe.setFileData(fileData); joe.setFirstname("Joe"); // joe.setLastname("Walnes"); //用来验证bboss和Xstream是否会按照null值传递,也就是说lastname有默认值"ssss" //这样我们手动把lastname设置为null,理论上来说反序列化后joe中的lastname应该是null而不是默认值"ssss" joe.setLastname(null); joe.setPhone(phone); joe.setFax(fax); joe.setDataArray(dataArray); joe.setDataList(dataList); joe.setDataMap(dataMap); joe.setDataSet(dataSet);
7.2测试结果
7.2.1序列化
执行次数 Bboss耗时 XStream耗时 生成的Bboss包大小 生成XStream包大小
1次 31毫秒 无法对文件对象内容进行序列化 65K ---
10次 141毫秒 无法对文件对象内容进行序列化
100次 1609毫秒 无法对文件对象内容进行序列化
1000次 16531毫秒 无法对文件对象内容进行序列化
10000次 166641毫秒无法对文件对象内容进行序列化
7.2.2反序列化
执行次数 Bboss耗时 XStream耗时 Bboss包大小 XStream包大小
1次 94毫秒 无法对文件对象内容进行反序列化 65K ---
10次 297毫秒 无法对文件对象内容进行反序列化
100次 2313毫秒 无法对文件对象内容进行反序列化
1000次 22375毫秒 无法对文件对象内容进行反序列化
10000次 226968毫秒无法对文件对象内容进行反序列化
8.总结
序列化
小数量的情况下,bboss比xstream要快3到4倍,bboss产生的序列化数据包比xstream略大一点。
中等数据量或者大数据量情况下bboss比xstream要快3到4倍,bboss产生的序列化数据包为48K基本接近实际数据大小,比xstream产生的包要小一半(xstream为78K)
反序列化
小数据量情况下,xstream比bboss快3-4倍
中等数据(xml数据)量或者大数据量(xml数据)情况下,bboss比xstream要快2-3倍
数据类型的支持
Bboss和xstream都提供了以下数据类型的序列化/反序列化支持:
基础数据类型;
list,map,set,数组,多维数组,枚举类型;
复杂对象类型;
异常Exception;
Date和Date[]类型
以及所有上面类型的组合嵌套类型
另外,从测试的情况来看bboss支持对文件对象类型的序列化/反序列化,而xstream不支持。
综上所述,从整体性能、产生的序列化包大小以及对数据类型支持类别三个角度来看,bboss比XStream都出色很多,尤其是在处理比较大的xml串时xstream表现非常差,从技术选型的角度上来看bboss应该是首选。
最新代码已经提交到github。
也可到以下下载地址:bbossgroups-3.5
序列化测试用例:TestSerializable
发表评论
-
bboss ioc快速入门教程
2017-08-13 11:28 1281bboss是一个非常不错的ioc框架,功能类似于spr ... -
bboss ioc配置文件中使用外部属性文件介绍
2016-09-20 11:35 1150bboss ioc配置文件中使用外部属性文件介绍 与spri ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 921首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss ioc提供的组件初始化工具类介绍
2016-03-18 16:17 741bboss ioc提供的组件初始化工具类介绍 bboss i ... -
扩展bboss ioc语法实现自定义的ioc依赖注入功能
2015-01-20 23:08 1336bboss ioc配置语法简洁而严谨,提供了强大的依赖注入功能 ... -
bboss序列化cglib代理对象方法介绍
2014-06-22 15:14 1181本文介绍bboss序列化cglib代理对象方法。经过cglib ... -
bboss自定义类对象序列化机制介绍
2014-05-26 23:32 1475bboss自定义类对象序列 ... -
bboss session共享时序列化存储jasperreports报表对象JasperPrint方法
2014-05-11 11:55 1112bboss session共享时序列化存储jasperrepo ... -
bboss将一个组件同时发布为webservice,hessian,http三种服务方法介绍
2014-04-12 14:31 1659bboss将一个组件同时发布为webservice,hessi ... -
bboss发布apache cxf 2.7.6服务和定义客户端服务实例可能产生冲突解决办法
2014-03-22 23:16 1092bboss发布apache cxf 2.7.6服务和定义客户端 ... -
bboss 发布和使用hessian服务方法介绍
2013-02-25 23:21 2121hessian是一款性能非常不错的RPC通讯组件,最近抽空将b ... -
bboss quartz组件全攻略
2013-01-27 13:31 2637bboss quartz组件全攻略 本 ... -
bboss aop拦截器使用简介
2012-11-29 23:20 1214bboss aop拦截器使用简介, ... -
bboss ioc容器之间组件引用方法简介
2012-08-04 15:09 1349bboss ioc容器之间组件引用方法简介。我们可以在ioc容 ... -
Rest协议框架-bboss rpc
2012-08-03 12:51 1364restful风格rpc服务协议rest,定义的语法如下: ... -
解决cxf+bboss发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
2012-06-19 10:11 1806cxf+bboss发布webservice服务 ... -
开源工作流引擎activiti与bboss整合使用方法浅析
2012-05-01 11:35 5235本文介绍开源工作流引擎activiti与bboss ioc框架 ... -
bboss aop/ioc组件配置语法诠释
2012-03-01 18:38 2220这篇文章全面介绍bboss ioc 配置语法,希望对 ... -
bboss aop/ioc依赖注入功能介绍
2012-02-12 14:40 1776bboss aop 3.5及后续版本中改进的ioc依赖注入功能 ... -
bboss 序列化功能详解
2012-01-27 11:04 1669bboss 序列化功能详解,bboss序列化组件是bbossg ...
相关推荐
在本文中,我们将深入探讨Bboss和Xstream两个序列化和反序列化库在性能方面的差异。这两个库在Java开发中广泛用于将对象转换为XML格式,以便于存储、传输或持久化。以下是对这两个库的详细分析。 首先,Bboss和...
5. **国际化与本地化**:框架内置了国际化和本地化支持,使得应用可以根据用户的语言环境显示相应的信息。 6. **安全控制**:BBoss MVCDemo提供了一套完整的权限控制体系,包括角色、权限分配,以及基于URL的访问...
bboss框架集成了AOP/iOC、MVC、持久化标签库、RPC、事件处理、Bean-XML序列化等多种功能。本项目基于bboss框架构建了数据采集ETL工具、流批一体化Stream工具、Elasticsearch客户端工具和WebSession共享框架等应用。
bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...
为了便于管理和监控,bboss-datatran 提供了可视化的操作界面,用户可以查看作业状态、监控性能指标、调整作业配置等。此外,它还支持API接口,方便集成到自动化运维流程中。 ### 社区支持 作为开源项目,bboss-...
1. **组件化开发**:BBoss支持模块化和组件化的开发模式,允许开发者根据项目需求选择必要的功能组件,避免了传统框架中“大而全”的问题,降低了系统的复杂度。 2. **数据库操作**:BBoss提供了便捷的数据访问层...
bbosssession的架构及其特点,如跨容器支持、灵活可扩展的序列化机制、基于分布式缓存的实现,使得它能够在集群环境中实现高性能和高可用的会话管理。而其在部署和集成方面的便利性,则使得开发者能更快速地将其应用...
5. **高级功能**: 学习如何利用 BBoss 进行聚合分析、自定义插件开发、性能优化等进阶操作。 **五、视频教程** 1. **搭建bboss elasticsearch开发环境.wmv**: 这个视频将指导你完成从安装Elasticsearch到配置BBoss...
通常,这些示例会展示如何初始化bboss客户端,如何构造和执行DSL查询,以及如何处理返回结果。 ```java // 初始化bboss客户端 ElasticsearchEntityMapping mapping = new ElasticsearchEntityMapping("my_index...
本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...
【Bboss国际化实践】主要涉及了软件系统的全球化适应性改造,以便支持多语言环境。以下是对这个主题的详细解析: 1. **界面元素国际化**: - 界面文字:所有用户可见的文字都需要进行翻译,确保不同语言环境下的...
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。 同时也是一个高性能Elasticsearch orm 客户端,100%兼容es各个版本 ...
bboss官方网站及bboss demo工程工程构建运行说明:1.搭建好ant构建环境和jdk 1.7及以上2.运行工程根目录下的build.bat指令3.构建成功后,会生成两个文件:distrib/bboss-site.jardistrib/bboss-site.warLicenseThe ...
bboss-plugins project.包含kafka、log4j、spring、dubbo、activemq、word转pdf、pdf转swf项目,持久层hibernate/hibernate4插件
BBoss和EasyUI是两个在IT领域中常用于构建企业级Web应用的开源框架。BBoss,全称为“Business Basic Operation Support”,是一个基于Java的企业级开发框架,它提供了丰富的组件和工具,使得开发者能够快速地进行...
【bboss-db-elasticsearch-tool-master_java_】是一个Java ORM(对象关系映射)框架,它在功能上超越了MyBatis,提供了对多种数据库的广泛支持,包括MySQL、Oracle、PostgreSQL、SQLServer、DB2、DM以及MongoDB。...
3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享