bbossgroups 对象xml序列化/反序列化性能测试

本文探讨开源项目bbossgroups 中对象xml序列化/反序列化性能测试。

[size=medium][b]1.测试和源码工程下载地址[/b][/size]
bboss soa工程源码下载(解压后子目录bboss-soa工程)
[url=http://www.bbossgroups.com/file/download.htm?fileName=bbossgroups-3.5.zip]bbossgroups soa[/url]
测试用例java代码下载(包含在bboss soa的test目录下)
[url=https://github.com/bbossgroups/bbossgroups-3.5/blob/master/bboss-soa/test/org/frameworkset/soa/xblink/TestSerializable.java]TestSerializable.java[/url]

[size=medium][b]2.用例使用代码[/b][/size]
[size=medium][b]2.1 定义两个类,Person与PhoneNumber[/b][/size]

public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
}

public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
}

public class Person {
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
// ... constructors and methods
}

public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
}


[size=medium][b]2.2 实例化一个Person对象[/b][/size]
PhoneNumber phone = new PhoneNumber();   
phone.setCode(123);
phone.setNumber("1234-456");

PhoneNumber fax = new PhoneNumber();
fax.setCode(123);
fax.setNumber("9999-999");

Person joe = new Person();
joe.setFirstname("Joe");
joe.setLastname("Walnes");
joe.setPhone(phone);
joe.setFax(fax);


[size=medium][b]2.3 序列化接口调用[/b][/size]
String xml = ObjectSerializable.convertBeanObjectToXML("person",joe,Person.class);


[size=medium][b]2.4 反序列化接口调用[/b][/size]
Person person = ObjectSerializable.convertXMLToBeanObject("person", xml, Person.class);


[size=medium][b]3.测试用例执行结果[/b][/size]

[size=medium][b]3.1 序列化耗时统计[/b][/size]
执行bboss beantoxml 1次,耗时:0毫秒
执行bboss beantoxml 10次,耗时:0毫秒
执行bboss beantoxml 100次,耗时:16毫秒
执行bboss beantoxml 1000次,耗时:62毫秒
执行bboss beantoxml 10000次,耗时:266毫秒

和xstream的序列化耗时对比(基于同样的测试数据和测试环境)
执行XStream beantoxml 1次,耗时:0毫秒
执行xtream beantoxml 10次,耗时:0毫秒
执行xtream beantoxml 100次,耗时:63毫秒
执行xtream beantoxml 1000次,耗时:140毫秒
执行xtream beantoxml 10000次,耗时:891毫秒


[size=medium][b]3.2 反序列化耗时统计[/b][/size]
执行bboss xmltobean 1次,耗时:0豪秒
执行bboss xmltobean 10次,耗时:31毫秒
执行bboss xmltobean 100次,耗时:250毫秒
执行bboss xmltobean 1000次,耗时:1203毫秒
执行bboss xmltobean 10000次,耗时:8438毫秒

和Xstream反序列化耗时对比(基于同样的测试数据和测试环境)
执行XStream xmltobean 1次,耗时:0豪秒
执行xStream xmltobean 10次,耗时:0毫秒
执行xStream xmltobean 100次,耗时:62毫秒
执行xStream xmltobean 1000次,耗时:188毫秒
执行xStream xmltobean 10000次,耗时:1344毫秒

从运行测试用例的效果来看,bboss序列化耗时情况还可以,效率比XStream要高出很多;但是bboss反序列化比xStream的反序列化要慢一些,还需进一步优化。

[size=medium][b]4.Person对象序列化输出的xml串[/b][/size]
<?xml version="1.0" encoding="gbk"?>
<properties>
<property name="person" class="org.frameworkset.soa.xblink.Person">
<property name="fax" class="org.frameworkset.soa.xblink.PhoneNumber">
<property name="code" soa:type="int" value="123" />
<property name="number" soa:type="String"><![CDATA[9999-999]]></property>
</property>
<property name="firstname" soa:type="String"><![CDATA[Joe]]></property>
<property name="lastname" soa:type="String"><![CDATA[Walnes]]></property>
<property name="phone" class="org.frameworkset.soa.xblink.PhoneNumber">
<property name="code" soa:type="int" value="123" />
<property name="number" soa:type="String"><![CDATA[1234-456]]></property>
</property>
</property>
</properties>


[size=medium][b]5.测试环境[/b][/size]
联想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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值