`

ProtoStuff&&XStream性能相差30%

    博客分类:
  • XML
阅读更多
package foo;

import java.util.Date;
import java.util.List;

import com.dyuproject.protostuff.Tag;

public class Person {
	@Tag(alias="username", value = 1)
	private  String name;
	@Tag(alias="Motto", value = 2)
	private  String motto ;
	@Tag(alias="gender", value = 3)
	private  Gender gender = Gender.MALE;	
	@Tag(alias="userlist1", value = 4)
	private List<User> userlist ;
	@Tag(alias="date", value = 5)
	private  Date date ;
	
	enum Gender {  
		MALE(1) ,    FEMALE(2);
		private Gender(int value){
			this.value = value ;
		}		
		private int value;		
		public String toString(){
			 return super.toString()+"("+value+")";  
		}
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMotto() {
		return motto;
	}
	public void setMotto(String motto) {
		this.motto = motto;
	}
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	public List<User> getUserlist() {
		return userlist;
	}
	public void setUserlist(List<User> userlist) {
		this.userlist = userlist;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	
}

 

package foo;


public class User {
	private String firstName;
	private String lastName;
	private String email;
//	private List<User> friends;

	public User() {
	}

	public User(String email) {
		this.email = email;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

//	public List<User> getFriends() {
//		return friends;
//	}
//
//	public void setFriends(List<User> friends) {
//		this.friends = friends;
//	}
}

 

package foo;

import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.dyuproject.protostuff.Schema;
import com.dyuproject.protostuff.XmlIOUtil;
import com.dyuproject.protostuff.runtime.RuntimeSchema;

import foo.Person.Gender;

public class PSTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person person = new Person();
		person.setName("John Doe");
		person.setMotto("Speed kills!");
		person.setGender(Gender.MALE);
		person.setDate(new Date());
		
		List<User> userlist = new ArrayList<User>();
		for(int i =0 ;i<10; i++){
			User user = new User();
			user.setEmail("cndone@gmail"+i);
			user.setFirstName("bie"+i);
			user.setLastName("哈哈"+i);
			userlist.add(user);
		}
		person.setUserlist(userlist);
		
		long begin = System.nanoTime();
		Schema<Person> schema = RuntimeSchema.getSchema(Person.class);  
		 byte[] xml = XmlIOUtil.toByteArray(person, schema);
		 String str = "";
		try {
			str = new String(xml, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 System.out.println(str);
		 long mid = System.nanoTime(); 
		 System.out.println(mid-begin);
		 
		 Person f = new Person();  
		 XmlIOUtil.mergeFrom(xml, f, schema);
		 System.out.println(f.getName());
		 System.out.println( new SimpleDateFormat("yyyy-MM-dd").format(f.getDate()));
		 long end = System.nanoTime(); 
		 System.out.println(end-mid);
		 
		 
	}

}

 

package foo;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

import foo.Person.Gender;

public class XStreamTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {		
		Person person = new Person();
		person.setName("John Doe");
		person.setMotto("Speed kills!");
		person.setGender(Gender.MALE);
		person.setDate(new Date());
		
		List<User> userlist = new ArrayList<User>();
		for(int i =0 ;i<10; i++){
			User user = new User();
			user.setEmail("cndone@gmail"+i);
			user.setFirstName("bie"+i);
			user.setLastName("哈哈"+i);
			userlist.add(user);
		}
		person.setUserlist(userlist);
		
		/**bean 2 XML*/
		long begin = System.nanoTime();
		XStream xstream = new XStream(new DomDriver());
		xstream.alias("Person", Person.class);
		xstream.alias("User", User.class);
		String str = xstream.toXML(person);
		 System.out.println(str);
		 long mid = System.nanoTime(); 
		 System.out.println(mid-begin);
		 
		 /**XML 2 BEAN*/
		 Person f = (Person) xstream.fromXML(str);
		 System.out.println(f.getName());
		 System.out.println( new SimpleDateFormat("yyyy-MM-dd").format(f.getDate()));
		 long end = System.nanoTime(); 
		 System.out.println(end-mid);
		 
	}

}

 测试结果:

<!--StartFragment -->
 
参考:
  • 大小: 19.4 KB
分享到:
评论

相关推荐

    xstream-1.4.15.jar

    XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...

    最齐全的xstream1.4.8.jar

    最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    xstream-1.4.11-API文档-中文版.zip

    赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...

    xstream-1.4.19.jar

    xstream-1.4.19.jar

    xstream-1.4.jar

    xstream jar包,java对象转xml以及xml转java对象,操作很简单。

    XStream XML与Json转换

    XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...

    xstream-1.4.2.jar

    xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html

    xstream1.22.jar

    xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar

    xstream-1.4.7.jar

    xstream-1.4.7.jar XML

    解决XStream注解同名冲突

    com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- Debugging information ---- message : No field 'null' found in class '.....' cause...

    XStream解析XML实例

    XStream解析XML实例

    xstream相关的jar包

    xstream所需要的jar包,xstream-1.4.9.jar、dom4j-1.6.1.jar、xpp3_min-1.1.4c.jar等

    xstream-1.4.7-API文档-中文版.zip

    赠送jar包:xstream-1.4.7.jar; 赠送原API文档:xstream-1.4.7-javadoc.jar; 赠送源代码:xstream-1.4.7-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.7.pom; 包含翻译后的API文档:xstream-1.4.7-javadoc-...

    XStream DOC

    XStream DOC

    xstream-1.4.5.jar

    xstream xstream-1.4.5.jar

    xstream-1.4.2

    xstream-1.4.2

    Java用xStream拼接xml

    webService接口对接时,需要传递一个xml内容。用xStream拼接xml

    xstream-1.3.1-sae-liufeng

    修改XStream源码,解决SAE不支持XStream的问题。

Global site tag (gtag.js) - Google Analytics