实例代码 : http://download.csdn.net/detail/jiangtao_st/7677503
/**
 *
 * <p>
 *用户实体对象定义
 * </p>
 *
 * @author 卓轩
 * @创建时间:2014年6月20日
 * @产品: UIC
 * @version: V1.0
 */
public class UserDO implements Serializable {
	private static final long serialVersionUID = 7289036533757178921L;
	/**
	 * userid
	*/
	private int userId;
	/**
	 * email
	*/
	private String email;
	/**
	 * uname
	*/
	private String uname;
	/**
	 * unick
	*/
	private String unick;
	/**
	 * sex
	*/
	private Integer sex;
	public int getUserId() {
		return userId;
	}
	public void setUserId(int userId) {
		this.userId = userId;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUnick() {
		return unick;
	}
	public void setUnick(String unick) {
		this.unick = unick;
	}
	public Integer getSex() {
		return sex;
	}
	public void setSex(Integer sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "UserDO ["+this.userId+"],["+this.uname+"],["+this.unick+"],["+this.email+"]";
	}
	public byte [] coder(){
		ByteBuffer buffer = ByteBuffer.allocate(1024);
		
		byte [] email = this.email.getBytes();
		buffer.putInt(email.length);
		buffer.put(email);
		
		byte [] uname =this.uname.getBytes();
		buffer.putInt(uname.length);
		buffer.put(uname);
		
		byte [] unick = this.unick.getBytes();
		buffer.putInt(unick.length);
		buffer.put(unick);
		
		buffer.putInt(this.sex);
		buffer.putInt(this.userId);
		
		buffer.flip();
		byte[] result = new byte[buffer.remaining()];
		buffer.get(result);
		return result;
	}
}/**
 * 
 * <p>
 * 	对比对象编解码 优劣
 * 
 *  代码通过从同一个对象,使用jdk序列化 和 二进制编解码 ,从执行时间,产生的字节大小作对比
 * </p>
 * 
 * @author 卓轩
 * @创建时间:2014年7月8日
 * @version: V1.0
 */
public class ObjectCoderCompare {
	/**
	 * 对比序列化文件大小
	 */
	@Test
	public void sizeByteCompare(){
		
		try {
			UserDO zhuoxuan = new UserDO();
			zhuoxuan.setUserId(113445);
			zhuoxuan.setSex(1);
			zhuoxuan.setUname("卓轩");
			zhuoxuan.setUnick("zhuoxuan");
			zhuoxuan.setEmail("zhuoxuan@mogujie.com");
			
			System.out.println("byte array 序列化大小:" + zhuoxuan.coder().length);
			
			//jdk 序列化对象
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			ObjectOutputStream objectOutputStream = new ObjectOutputStream(bos);
			objectOutputStream.writeObject(zhuoxuan);
			objectOutputStream.flush();
			objectOutputStream.close();
			byte[] byteArray = bos.toByteArray();
			System.out.println("jdk序列化对象大小:" + byteArray.length);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 执行时间,性能对比
	 */
	@Test
	public void performCompare(){
		
		try {
			UserDO zhuoxuan = new UserDO();
			zhuoxuan.setUserId(113445);
			zhuoxuan.setSex(1);
			zhuoxuan.setUname("卓轩");
			zhuoxuan.setUnick("zhuoxuan");
			zhuoxuan.setEmail("zhuoxuan@mogujie.com");
			
			long startTime = System.currentTimeMillis();
			int count = 1000000;
			for (int i = 0; i < count; i++) {
				zhuoxuan.coder();
			}
			long endTime = System.currentTimeMillis();
			System.out.println("byte array 执行时间:" + (endTime-startTime) + "ms");
			
			startTime = System.currentTimeMillis();
			for (int i = 0; i < count; i++) {
				//jdk 序列化对象
				ByteArrayOutputStream bos = new ByteArrayOutputStream();
				ObjectOutputStream objectOutputStream = new ObjectOutputStream(bos);
				objectOutputStream.writeObject(zhuoxuan);
				objectOutputStream.flush();
				objectOutputStream.close();
				byte[] byteArray = bos.toByteArray();
			}
			endTime = System.currentTimeMillis();
			System.out.println("jdk 序列化对象 执行时间:" + (endTime-startTime) + "ms");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}byte array 序列化大小:54
jdk序列化对象大小:267
Java网络编程-对象编解码方案、优劣对比,布布扣,bubuko.com
原文:http://blog.csdn.net/jiangtao_st/article/details/38117739