Bboss和xstream序列化/反序列化性能对比
Bboss和xstream序列化/反序列化性能对比
本报告分别测试bboss和xstream的序列化和反序列化功能,测试的接口如下:
1.接口方法
Bboss序列化和反序列化方法
//序列化String xml = ObjectSerializable.toXML(joe);//反序列化Person p = ObjectSerializable.toBean(xml, Person.class);
XStream xStream = new XStream();String xmlXstream = xStream.toXML(joe);Person p = (Person)xStream.fromXML(xmlXstream);
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);
//这个文件中内容有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);
//这个文件中内容有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);