package com.neverwinterdp.sparkngin.http;
import org.junit.Test;
import com.neverwinterdp.message.Message;
import com.neverwinterdp.util.IOUtil;
import com.neverwinterdp.util.JSONSerializer;
import com.neverwinterdp.yara.MetricPrinter;
import com.neverwinterdp.yara.MetricRegistry;
import com.neverwinterdp.yara.Timer;
/**
* @author Tuan Nguyen
* @email tuan08@gmail.com
*/
public class SerializationPerformanceTest {
@Test
public void testPerformance() throws Exception {
int LOOP = 1000000 ;
System.out.println("Test default java serialization") ;
testJavaSerialization(LOOP) ;
System.out.println("\n\n");
System.out.println("Test JSON serialization") ;
testJSONSerialization(LOOP) ;
}
void testJavaSerialization(int loop) throws Exception {
MetricRegistry mRegistry = new MetricRegistry() ;
Message message = new Message("message", new byte[1024], true) ;
byte[] data = IOUtil.serialize(message) ;
long start = System.currentTimeMillis() ;
for(int i = 0; i < loop; i++) {
Timer.Context serializeCtx = mRegistry.timer("serialize").time() ;
IOUtil.serialize(message) ;
serializeCtx.stop() ;
Timer.Context deserializeCtx = mRegistry.timer("deserialize").time() ;
IOUtil.deserialize(data) ;
deserializeCtx.stop() ;
}
long stop = System.currentTimeMillis() ;
new MetricPrinter().print(mRegistry);
System.out.println("Serialize/Deserialze " + loop + " in " + (stop -start) + "ms");
}
void testJSONSerialization(int loop) throws Exception {
MetricRegistry mRegistry = new MetricRegistry() ;
Message message = new Message("message", new byte[1024], true) ;
byte[] data = JSONSerializer.INSTANCE.toBytes(message) ;
long start = System.currentTimeMillis() ;
for(int i = 0; i < loop; i++) {
Timer.Context serializeCtx = mRegistry.timer("serialize").time() ;
JSONSerializer.INSTANCE.toBytes(message) ;
serializeCtx.stop() ;
Timer.Context deserializeCtx = mRegistry.timer("deserialize").time() ;
JSONSerializer.INSTANCE.fromBytes(data, Message.class) ;
deserializeCtx.stop() ;
}
long stop = System.currentTimeMillis() ;
new MetricPrinter().print(mRegistry);
System.out.println("Serialize/Deserialze " + loop + " in " + (stop -start) + "ms");
}
}