| /******************************************************************************* |
| * Copyright (c) 1998, 2012 Oracle and/or its affiliates. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
| * which accompanies this distribution. |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Contributors: |
| * Oracle - initial impl |
| ******************************************************************************/ |
| package example; |
| |
| import java.io.StringWriter; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import javax.swing.JOptionPane; |
| |
| //import oracle.toplink.exalogic.serializers.POFReflectionSerializer; |
| |
| //import org.eclipse.persistence.expressions.ExpressionBuilder; |
| //import org.eclipse.persistence.queries.ReadAllQuery; |
| |
| //import com.tangosol.io.pof.PortableObjectSerializer; |
| //import com.tangosol.io.pof.SimplePofContext; |
| |
| import model.Order; |
| import model.OrderLine; |
| |
| /** |
| * Test the performance of various different serialization formats and objects. |
| * @author James Sutherland |
| */ |
| public class Test extends PerformanceTest { |
| public static interface Factory { |
| Object create(); |
| } |
| |
| public static void main(String[] args) throws Exception { |
| try { |
| Test test = new Test(); |
| test.test(); |
| } catch (Exception error) { |
| error.printStackTrace(); |
| } |
| } |
| |
| public void test() { |
| Factory factory = new Factory() { |
| public Object create() { |
| Order order = new Order(); |
| //for (int index = 0; index < 100; index++) { |
| order.addOrderLine(new OrderLine()); |
| //order.getOrderLines().add(new OrderLine()); |
| //} |
| return order; |
| //ReadAllQuery query = new ReadAllQuery(Order.class); |
| //query.setSelectionCriteria(new ExpressionBuilder().get("id").equal(100)); |
| //return query; |
| } |
| }; |
| |
| //SimplePofContext simpleContext = new SimplePofContext(); |
| //simpleContext.registerUserType(1, Order.class, new POFReflectionSerializer(Order.class)); |
| //simpleContext.registerUserType(2, OrderLine.class, new POFReflectionSerializer(OrderLine.class)); |
| //simpleContext.setReferenceEnabled(true); |
| //POFSerializer pofReflect = new POFSerializer(simpleContext); |
| |
| byte[] bytes = null; |
| Object object = null; |
| //POFSerializer pof = new POFSerializer(); |
| //bytes = pof.serialize(factory.create()); |
| //object = pof.deserialize(bytes); |
| KryoSerializer kyro = new KryoSerializer(); |
| bytes = kyro.serialize(factory.create()); |
| object = kyro.deserialize(bytes); |
| JSONSerializer json = new JSONSerializer(); |
| bytes = json.serialize(factory.create()); |
| object = json.deserialize(bytes); |
| XMLSerializer xml = new XMLSerializer(); |
| bytes = xml.serialize(factory.create()); |
| object = xml.deserialize(bytes); |
| JavaSerializer java = new JavaSerializer(); |
| bytes = java.serialize(factory.create()); |
| object = java.deserialize(bytes); |
| //DatabaseSerializer db = new DatabaseSerializer(); |
| //bytes = db.serialize(factory.create()); |
| //object = db.deserialize(bytes); |
| |
| //JOptionPane.showMessageDialog(null, "Start"); |
| |
| List<List> results = new ArrayList<List>(); |
| //results.add(testSerialization("order-POF-reflect", factory, pofReflect)); |
| //results.add(testSerialization("order-POF", factory, pof)); |
| results.add(testSerialization("order-JSON", factory, json)); |
| results.add(testSerialization("order-XML", factory, xml)); |
| //results.add(testSerialization("order-Database", factory, db)); |
| results.add(testSerialization("order-Kryo", factory, kyro)); |
| results.add(testSerialization("order-Java", factory, java)); |
| //testSerialization("empty-HashMap", new HashMap(), new JavaSerializer()); |
| //testSerialization("empty-ArrayList", new ArrayList(), new JavaSerializer()); |
| //testSerialization("Class", JFormattedTextField.class, new JavaSerializer()); |
| |
| //JOptionPane.showMessageDialog(null, "Finish"); |
| |
| for (List result : results) { |
| for (int index = 0; index < result.size(); index = index + 3) { |
| System.out.println(""); |
| System.out.println(((PerformanceResult)result.get(index)).testName + " : " + ((PerformanceResult)result.get(index)).average); |
| System.out.println(((PerformanceResult)result.get(index+ 1)).testName + " : " + ((PerformanceResult)result.get(index + 1)).average); |
| System.out.println("Size: " + result.get(index + 2)); |
| } |
| } |
| } |
| |
| public List testSerialization(String testName, final Factory factory, final Serializer serializer) { |
| List result = new ArrayList(); |
| System.out.println("\n\nbegin test " + testName); |
| result.add(this.executeRun(testName + "-serialize", new Runnable() { |
| public void run() { |
| serializer.serialize(factory.create()); |
| } |
| })); |
| final byte[] bytes = serializer.serialize(factory.create()); |
| result.add(this.executeRun(testName + "-deserialize", new Runnable() { |
| public void run() { |
| serializer.deserialize(bytes); |
| } |
| })); |
| result.add(bytes.length); |
| System.out.println("serialization size: " + bytes.length + " bytes"); |
| StringWriter writer = new StringWriter(); |
| for (int index = 0; index < bytes.length; index++) { |
| char c = (char)bytes[index]; |
| if (c == '<') { |
| writer.write("<"); |
| } else if (c == '>') { |
| writer.write(">"); |
| } else if (c < 32 || c > 126) { |
| writer.write('-'); |
| } else { |
| writer.write(c); |
| } |
| } |
| System.out.println("\nserialization bytes:\n" + writer.toString()); |
| System.out.println("\nfinish test " + testName); |
| return result; |
| } |
| |
| } |