(java入门)BASE64 & 序列化

结论:序列化比BASE64消耗多

package net.tianyu.sample;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import org.apache.commons.codec.binary.Base64;

public class TestSerialize implements Serializable {

	private static final long serialVersionUID = 282679798530248147L;
	private static final String ENCODE_CHART_SET = "UTF-8";
	private static final long TEST_COUNT = 500;

	public static void main(String[] args) throws Exception {

		for (int i = 0; i < 100; i++) {
			System.out.println("---------- test start ----------" + new Integer(i));
			testSerialize();
			testBase64();
		}
	}

	private static void testBase64() throws Exception {
		TreeBean tree = new TreeBean();
		String bytes;

		long startTime = System.currentTimeMillis();
		for (int i = 0; i < TEST_COUNT; i++) {
			bytes = getStringFromObject(tree);
			getObjectFromString(bytes);
		}
		long endTime = System.currentTimeMillis();
		System.out.println("testBase64 : " + (endTime - startTime));
	}

	private static void testSerialize() throws Exception {
		TreeBean tree = new TreeBean();
		byte[] bytes;

		long startTime = System.currentTimeMillis();
		for (int i = 0; i < TEST_COUNT; i++) {
			bytes = getByteArrayFromObject(tree);
			getObjectFromByteArray(bytes);
		}
		long endTime = System.currentTimeMillis();
		System.out.println("testSerialize : " + (endTime - startTime));
	}

	private static Object getObjectFromString(String objectString) throws Exception {
		if (objectString == null || objectString.trim().length() == 0) {
			return null;
		}
		Base64 base64Decoder = new Base64();
		return getObjectFromByteArray(base64Decoder.decode(objectString.getBytes(ENCODE_CHART_SET)));
	}

	private static String getStringFromObject(Object dataObject) throws Exception {
		Base64 base64Decoder = new Base64();
		byte[] bytes = base64Decoder.encode(getByteArrayFromObject(dataObject));
		return new String(bytes, ENCODE_CHART_SET);
	}

	private static byte[] getByteArrayFromObject(Object dataObject) throws Exception {
		if (dataObject == null) {
			return null;
		}
		ByteArrayOutputStream ostream = new ByteArrayOutputStream();
		ObjectOutputStream p = new ObjectOutputStream(ostream);
		p.writeObject(dataObject);
		p.flush();
		byte[] data = ostream.toByteArray();
		p.close();
		ostream.close();
		return data;
	}

	private static Object getObjectFromByteArray(byte[] databyte) throws Exception {
		if (databyte == null) {
			return null;
		}
		ByteArrayInputStream intream = new ByteArrayInputStream(databyte);
		ObjectInputStream p = new ObjectInputStream(intream);
		return p.readObject();
	}
}

 

你可能感兴趣的:(java,apache,.net)