1*0ed15c77SAndroid Build Coastguard Worker package perf; 2*0ed15c77SAndroid Build Coastguard Worker 3*0ed15c77SAndroid Build Coastguard Worker import java.io.IOException; 4*0ed15c77SAndroid Build Coastguard Worker import java.util.UUID; 5*0ed15c77SAndroid Build Coastguard Worker 6*0ed15c77SAndroid Build Coastguard Worker import com.fasterxml.jackson.core.JsonProcessingException; 7*0ed15c77SAndroid Build Coastguard Worker import com.fasterxml.jackson.databind.DeserializationContext; 8*0ed15c77SAndroid Build Coastguard Worker import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 9*0ed15c77SAndroid Build Coastguard Worker import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer; 10*0ed15c77SAndroid Build Coastguard Worker import com.fasterxml.jackson.databind.json.JsonMapper; 11*0ed15c77SAndroid Build Coastguard Worker 12*0ed15c77SAndroid Build Coastguard Worker public class ManualReadPerfWithUUID extends ObjectReaderTestBase 13*0ed15c77SAndroid Build Coastguard Worker { 14*0ed15c77SAndroid Build Coastguard Worker static class UUIDNative { 15*0ed15c77SAndroid Build Coastguard Worker public UUID[] ids; UUIDNative()16*0ed15c77SAndroid Build Coastguard Worker public UUIDNative() { } UUIDNative(UUID[] ids)17*0ed15c77SAndroid Build Coastguard Worker public UUIDNative(UUID[] ids) { this.ids = ids; } 18*0ed15c77SAndroid Build Coastguard Worker } 19*0ed15c77SAndroid Build Coastguard Worker 20*0ed15c77SAndroid Build Coastguard Worker @Override targetSizeMegs()21*0ed15c77SAndroid Build Coastguard Worker protected int targetSizeMegs() { return 8; } 22*0ed15c77SAndroid Build Coastguard Worker 23*0ed15c77SAndroid Build Coastguard Worker @SuppressWarnings("serial") 24*0ed15c77SAndroid Build Coastguard Worker static class SlowDeser extends FromStringDeserializer<UUID> 25*0ed15c77SAndroid Build Coastguard Worker { SlowDeser()26*0ed15c77SAndroid Build Coastguard Worker public SlowDeser() { super(UUID.class); } 27*0ed15c77SAndroid Build Coastguard Worker 28*0ed15c77SAndroid Build Coastguard Worker @Override _deserialize(String id, DeserializationContext ctxt)29*0ed15c77SAndroid Build Coastguard Worker protected UUID _deserialize(String id, DeserializationContext ctxt) 30*0ed15c77SAndroid Build Coastguard Worker throws IOException, JsonProcessingException 31*0ed15c77SAndroid Build Coastguard Worker { 32*0ed15c77SAndroid Build Coastguard Worker return UUID.fromString(id); 33*0ed15c77SAndroid Build Coastguard Worker } 34*0ed15c77SAndroid Build Coastguard Worker } 35*0ed15c77SAndroid Build Coastguard Worker 36*0ed15c77SAndroid Build Coastguard Worker static class UUIDWithJdk { 37*0ed15c77SAndroid Build Coastguard Worker @JsonDeserialize(contentUsing=SlowDeser.class) 38*0ed15c77SAndroid Build Coastguard Worker public UUID[] ids; UUIDWithJdk()39*0ed15c77SAndroid Build Coastguard Worker public UUIDWithJdk() { } UUIDWithJdk(UUID[] ids)40*0ed15c77SAndroid Build Coastguard Worker public UUIDWithJdk(UUID[] ids) { this.ids = ids; } 41*0ed15c77SAndroid Build Coastguard Worker } 42*0ed15c77SAndroid Build Coastguard Worker main(String[] args)43*0ed15c77SAndroid Build Coastguard Worker public static void main(String[] args) throws Exception 44*0ed15c77SAndroid Build Coastguard Worker { 45*0ed15c77SAndroid Build Coastguard Worker if (args.length != 0) { 46*0ed15c77SAndroid Build Coastguard Worker System.err.println("Usage: java ..."); 47*0ed15c77SAndroid Build Coastguard Worker System.exit(1); 48*0ed15c77SAndroid Build Coastguard Worker } 49*0ed15c77SAndroid Build Coastguard Worker UUID[] uuids = new UUID[8]; 50*0ed15c77SAndroid Build Coastguard Worker for (int i = 0; i < uuids.length; ++i) { 51*0ed15c77SAndroid Build Coastguard Worker uuids[i] = UUID.randomUUID(); 52*0ed15c77SAndroid Build Coastguard Worker } 53*0ed15c77SAndroid Build Coastguard Worker UUIDNative input1 = new UUIDNative(uuids); 54*0ed15c77SAndroid Build Coastguard Worker UUIDWithJdk input2 = new UUIDWithJdk(uuids); 55*0ed15c77SAndroid Build Coastguard Worker 56*0ed15c77SAndroid Build Coastguard Worker JsonMapper m = new JsonMapper(); 57*0ed15c77SAndroid Build Coastguard Worker 58*0ed15c77SAndroid Build Coastguard Worker new ManualReadPerfWithRecord().testFromBytes( 59*0ed15c77SAndroid Build Coastguard Worker m, "JSON-as-Object", input1, UUIDNative.class, 60*0ed15c77SAndroid Build Coastguard Worker m, "JSON-as-Array", input2, UUIDWithJdk.class); 61*0ed15c77SAndroid Build Coastguard Worker } 62*0ed15c77SAndroid Build Coastguard Worker } 63