`

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
分享到:
评论

相关推荐

    XStream1.4.16反序列化漏洞(CVE-2020-26258、CVE-2020-26259)

    XStream是一个常用的Java对象和XML相互转换的工具。近日XStream官方发布安全更新,修复了XStream 反序列化漏洞(CVE-2020-26258、CVE-2020-26259)。攻击者通过构造恶意的XML文档,可绕过XStream的黑名单,触发反...

    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 ...

    Oracle Database XStream Guide 11g Release 2 (11.2)-302

    * XStream 的性能优化可以满足高性能和高可用性的业务需求。 六、高可用性 * Oracle Database XStream 支持高可用性架构,能够确保数据捕获和事件处理的连续性。 * XStream 可以与 Oracle 数据库的高可用性机制...

    xstream 的高级用法,自定义输出结构

    《XStream的高级用法与自定义输出结构详解》 XStream是一款强大的Java库,用于将Java对象序列化为XML,以及将XML反序列化回Java对象。它以其简洁的API和灵活的配置赢得了广大开发者喜爱。在日常开发中,我们不仅...

    xstream最新版 - xstream-1.4.18.jar

    xstream最新版jar包

    xstream解析依赖包

    尽管xpp3_min-1.1.4c.jar是精简版,但它确保了XStream在处理XML数据时的高性能和低内存消耗。在实际项目中,理解这两个库的工作原理和相互关系,对于优化代码性能和解决可能出现的问题都至关重要。

    xstream-1.4.2.jar

    《XStream详解与应用》 XStream是一款强大的Java库,用于将对象序列化为XML,同时也能从XML数据中反序列化回对象。在标题"xstream-1.4.2.jar"中,我们看到的是XStream的一个特定版本——1.4.2。这个版本包含了...

    xstream相关的jar包

    XStream是一款强大的Java库,用于将Java对象序列化为XML,反之亦然。这个库的主要优点在于其简单易用的API和对复杂对象图的处理能力。在标题中提到的"Xstream相关的jar包",是指为了使用XStream库,需要引入的依赖...

    XStream简单应用实例

    3. **性能**: 相比于其他序列化库,XStream在某些场景下表现出较高的性能。 4. **安全性**: 提供了安全模式,防止潜在的跨站脚本(XSS)攻击。 5. **XML格式**: 输出的XML格式清晰易读,适合人类阅读和调试。 **...

    xstream-1.3.1.zip

    6. 高效性能:XStream设计精良,执行效率高,特别是在处理大量数据时,其性能表现优秀。 使用“xstream-1.3.1.jar”,开发者可以将其添加到项目的类路径中,然后通过简单的几行代码就能实现对象和XML之间的转换。...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    XStream库提供了一个简单、直观的方式来实现这种转换,使得XML序列化和反序列化变得非常方便。本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一...

    xStream完整Jar包

    **XStream 概述** XStream 是一个 Java 库,用于将对象序列化为 XML,以及从 XML 反序列化回对象。它提供了一种简单而直观的方式来处理 XML 数据,使得 XML 文档与 Java 对象之间的转换变得轻而易举。这个“xStream...

    XStream 1.4.11 jar包

    在 XStream 1.4.11 版本中,开发者可以期待稳定性和性能的提升。 **核心功能** 1. **XML 与 Java 对象的双向转换**:XStream 提供了一种直观的方式来将 Java 对象转换成 XML 文档,同时也可以将 XML 文档解析回...

    xstream.jar及其他依赖jar包

    XStream库的灵活性和性能使其成为许多Java开发者的首选工具。需要注意的是,在实际使用中,需要确保引入的jar包版本兼容,避免出现运行时异常。同时,为了保证数据的安全性,应合理设置XStream的安全配置,避免潜在...

    xstream1.4.15.JAR

    XStream 是一个流行的 Java 库,用于将对象序列化为 XML 和从 XML 反序列化回对象。这个库广泛应用于各种 Java 应用程序,尤其是那些需要在网络间传输或存储对象数据的情况。在标题提到的 "xstream1.4.15.JAR" 文件...

    xstream-1.4.8最齐全的jar包

    XStream是一款强大的Java库,主要用于将Java对象序列化为XML,以及将XML反序列化回Java对象。在Java开发中,这种能力对于数据持久化、网络传输或配置存储等场景非常有用。标题中的"xstream-1.4.8最齐全的jar包"表明...

    Bboss和xstream序列化反序列化性能对比1

    在本文中,我们将深入探讨Bboss和Xstream两个序列化和反序列化库在性能方面的差异。这两个库在Java开发中广泛用于将对象转换为XML格式,以便于存储、传输或持久化。以下是对这两个库的详细分析。 首先,Bboss和...

    XStream使用文档 wd.docx

    3. **高性能**:相对于其他序列化工具,XStream 在处理速度和内存占用方面表现出色。 4. **XML 结构清晰**:生成的 XML 输出简洁且易于阅读。 5. **类型适应性强**:序列化的对象可以包含任意复杂的数据结构,包括类...

Global site tag (gtag.js) - Google Analytics