java xml序列化框架_java-哪个xml序列化库面向性能?

如果性能是决定因素,那么什么是Java的最佳XML序列化库?

应用重点

>基于休息的API.

> Tomcat Servlet容器

>需要Java对象才能进行XML序列化

>不需要反序列化或重绑定库.

>需要开源库.

目前的表现数字

>使用StringBuffer附加“”生成的XML等等.

>平均响应时间= 15毫秒.

>容易出现格式错误的XML和xml编码错误.

>使用XStream序列化生成的XML.

>平均响应时间= 200毫秒.

>易于维护和注释.

我遇到的其他库,例如JiBx,JaxB,Castor或Simple,似乎是绑定框架,并且似乎负担很重.

还有其他用于XML序列化的高性能替代方法,还是我应该继续使用Woodstox Stax实现(使用报告似乎是稳定的开源库中最快的报告)使用XMLStreamWriter API来实现toXml()?

解决方法:

我非常怀疑XStream是否需要200毫秒,除非您要发送非常大的对象.您确定您的VM已预热吗?

我不会将StringBuffer用作其线程安全的每次调用都带有锁的方法.请改用StringBuilder.

以下测试打印

Took 56 us on average to serialise a Person

您进行序列化的时间要长4000倍.您的测试未预热,或者您正在发送大量数据.如果是后者,我建议以二进制格式发送数据.

// based on the example in the two-minute tutorial.

public class XStreamTest {

public static class Person {

private String firstname;

private String lastname;

private PhoneNumber phone;

private PhoneNumber fax;

public Person(String firstname, String lastname, PhoneNumber phone, PhoneNumber fax) {

this.firstname = firstname;

this.lastname = lastname;

this.phone = phone;

this.fax = fax;

}

}

public static class PhoneNumber {

private int code;

private String number;

public PhoneNumber(int code, String number) {

this.code = code;

this.number = number;

}

}

public static void main(String... args) {

XStream xstream = new XStream();

xstream.alias("person", Person.class);

xstream.alias("phonenumber", PhoneNumber.class);

Person joe = new Person("Joe", "Walnes", new PhoneNumber(123, "1234-456"), new PhoneNumber(123, "9999-999"));

final int warmup = 10000;

final int runs = 20000;

long start = 0;

for (int i = -warmup; i < runs; i++) {

if(i == 0) start = System.nanoTime();

String xml = xstream.toXML(joe);

}

long time = System.nanoTime() - start;

System.out.printf("Took %,d us on average to serialise a Person%n", time / runs / 1000);

}

}

标签:performance,serialization,xml,java

来源: https://codeday.me/bug/20191208/2091473.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值