xml序列化的性能问题
2011-10-17 20:59
190 查看
最近一个web模块在做性能测试,用lr一压,发现tps很低,还不到15。
问题很严重,虽然达到了需求中规定的要求,但是发现实在有点对不起观众。
决定对代码进行分析,我开始一段的一段的进行分析,查看执行时间。后来老大用jprofile分析,更快,看样子我有点土了。
很快我把问题定位在xml的序列化上,因为请求的参数都是xml报文,而我们使用的是castor来进行反序列化和序列化。发现消耗在这段的时间占总时间的一半,感觉不对劲。
后来我就直接写了个简单的测试例子,用jmeter来压,也很慢,然后我找网上的xstream来做同样的事情,性能比这个高10倍左右,看样子是castor对多线程支持不好,高并发下性能不行。
对比castor和XStream两个开源的组件序列化和反序列化xml的性能。
部署在weblogic上的例子,100个线程循环100次,以下是使用jmeter测试后的聚合报告截图:
castor:
XStream:
xstream的throughput的值最高能达到300.
通过对比,可以发现castor的性能存在问题。
后来察看castor的文档,发现在个文档(xml-best-practice.html)有对性能说明;
主要是说要对Descriptor classes 这种对象进行缓存,还好castor有这种机制,只要使用
XMLContext对象来创建(Un)Marshaller实例就行。具体看下面的代码:
问题很严重,虽然达到了需求中规定的要求,但是发现实在有点对不起观众。
决定对代码进行分析,我开始一段的一段的进行分析,查看执行时间。后来老大用jprofile分析,更快,看样子我有点土了。
很快我把问题定位在xml的序列化上,因为请求的参数都是xml报文,而我们使用的是castor来进行反序列化和序列化。发现消耗在这段的时间占总时间的一半,感觉不对劲。
后来我就直接写了个简单的测试例子,用jmeter来压,也很慢,然后我找网上的xstream来做同样的事情,性能比这个高10倍左右,看样子是castor对多线程支持不好,高并发下性能不行。
对比castor和XStream两个开源的组件序列化和反序列化xml的性能。
部署在weblogic上的例子,100个线程循环100次,以下是使用jmeter测试后的聚合报告截图:
castor:
XStream:
xstream的throughput的值最高能达到300.
通过对比,可以发现castor的性能存在问题。
后来察看castor的文档,发现在个文档(xml-best-practice.html)有对性能说明;
主要是说要对Descriptor classes 这种对象进行缓存,还好castor有这种机制,只要使用
XMLContext对象来创建(Un)Marshaller实例就行。具体看下面的代码:
private final static XMLContext xmlContext; static { xmlContext = new XMLContext(); try { /** * 请确保以下的目录下面有.castor.cdr这样的文件存在, * 否则cache将不起作用 */ xmlContext.addPackages(new String[]{"com.asiainfo.aidmccsupport.boss", "com.asiainfo.aidmccsupport.boss.operate", "com.asiainfo.aidmccsupport.boss.query"}); xmlContext.setProperty("ReuseObjects", true); } catch (ResolverException e) { e.printStackTrace(); } }
相关文章推荐
- Xml序列化自引用/循环引用问题1
- 【.Net基础02】XML序列化问题
- Dictionary在XML序列化时遇到的问题及应对方案
- XML在关系数据库应用中的性能问题探究
- 关于JavaScript解析XML的性能的问题(已解决)
- C# WebApi Xml序列化问题解决方法:“ObjectContent`1”类型未能序列化内容类型“application/xml;charset=utf-8"的响应正文。...
- DataSet的Xml序列化问题
- XML文本的序列化与反序列化的操作,与遇到的问题
- C# Json库 和 xml 序列化反序列化 存在的问题
- Unity3D中xml序列化出错的问题
- webapi 实体作为参数,自动序列化成xml的问题
- C# Json库 和 xml 序列化反序列化 存在的问题
- DateTime数据类型的XML序列化及时区问题(存档)
- c# - Xml序列化, 类名冲突问题
- XStream反序列化xml时遇到汉字乱码问题
- C# Json库 和 xml 序列化反序列化 存在的问题
- .net的XML对象序列化VS WCF中xml序列化问题
- 加载 MonoBehaviour 类时, public属性因为序列化所产生的性能开销问题
- 使用XStream序列化、反序列化XML数据时遇到的各种问题
- C#中,将XML源文件序列化和反序列化的问题