package ser.jsonbench;
import org.nustaq.serialization.FSTConfiguration;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.Serializable;
/**
* Created by ruedi on 02/07/15.
*/
public class JSonBench {
public static void javaxTest(JsonObject obj) {
try (ByteArrayOutputStream oos = new ByteArrayOutputStream();
JsonWriter writer = Json.createWriter(oos)) {
writer.writeObject(obj);
byte b[] = oos.toByteArray();
try (ByteArrayInputStream bais = new ByteArrayInputStream(b)) {
JsonReader reader = Json.createReader(bais);
JsonObject jsonObject = reader.readObject();
}
} catch (IOException e) {
e.printStackTrace();
}
}
static FSTConfiguration conf = FSTConfiguration.createJsonConfiguration(false, false);
public static void fstJson(Serializable ser) {
byte[] bytes = conf.asByteArray(ser);
Object o = conf.asObject(bytes);
}
public static class SerObj implements Serializable {
int num;
double dbl;
String str;
public SerObj() {
num = 999;
dbl = 1.234;
str = "Hello JSON";
}
}
public static void main( String a[] ) {
JsonObject json = Json.createObjectBuilder().add("num",999).add("dbl",1.234).add("str", "Hello JSON").build();
SerObj ser = new SerObj();
conf.registerCrossPlatformClassMappingUseSimpleName(SerObj.class);
while( true ) {
long now = System.currentTimeMillis();
for ( int i = 0; i < 10_000; i++ ) {
javaxTest(json);
}
System.out.println("javax: "+(System.currentTimeMillis()-now));
now = System.currentTimeMillis();
for ( int i = 0; i < 10_000; i++ ) {
fstJson(ser);
}
System.out.println("fst: "+(System.currentTimeMillis()-now));
}
}
}