package serialization;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import lsr.paxos.messages.Message;
import lsr.paxos.messages.MessageFactory;
public class FromFileSerialization {
public static void main(String args[]) throws IOException, ClassNotFoundException {
FileInputStream fis;
try {
fis = new FileInputStream(JOptionPane.showInputDialog("Filename..."));
} catch (NullPointerException e) {
System.exit(1);
return;
}
DataInputStream dis = new DataInputStream(fis);
List<Message> msgs = new Vector<Message>();
while (fis.available() != 0) {
dis.readInt();
msgs.add(MessageFactory.create(dis));
}
fis.close();
System.out.println("Message count: " + msgs.size());
List<byte[]> our = new Vector<byte[]>();
List<byte[]> java = new Vector<byte[]>();
List<Message> ourM = new Vector<Message>();
List<Message> javaM = new Vector<Message>();
byte[] byteArray;
long lengthsum = 0;
long start = System.nanoTime();
for (Message ms : msgs) {
byteArray = ms.toByteArray();
our.add(byteArray);
lengthsum += byteArray.length;
}
long stop = System.nanoTime();
System.out.println("Our____serialization_time " + (((double) (stop - start)) / 1e9) + " _avg_size "
+ (((double) lengthsum) / msgs.size()));
start = System.nanoTime();
for (byte[] ms : our) {
ByteArrayInputStream bais = new ByteArrayInputStream(ms);
ourM.add(MessageFactory.create(new DataInputStream(bais)));
}
stop = System.nanoTime();
System.out.println("Our__deserialization_time " + (((double) (stop - start)) / 1e9));
lengthsum = 0;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
start = System.nanoTime();
for (Message ms : msgs) {
baos.reset();
new ObjectOutputStream(baos).writeObject(ms);
byteArray = baos.toByteArray();
java.add(byteArray);
lengthsum += byteArray.length;
}
stop = System.nanoTime();
System.out.println("Java___serialization_time " + (((double) (stop - start)) / 1e9) + " _avg_size "
+ (((double) lengthsum) / msgs.size()));
lengthsum = 0;
ByteArrayInputStream bais;
start = System.nanoTime();
for (byte[] ms : java) {
bais = new ByteArrayInputStream(ms);
javaM.add((Message) new ObjectInputStream(bais).readObject());
}
stop = System.nanoTime();
System.out.println("Java_deserialization_time " + (((double) (stop - start)) / 1e9));
}
}
//Message count: 1079429
//Our____serialization_time 0.909168376 _avg_size 166.71224693796444
//Our__deserialization_time 1.054995782
//Java___serialization_time 7.002709321 _avg_size 320.3365408933797
//Java_deserialization_time 21.966526144