xref: /aosp_15_r20/external/jackson-databind/src/test/java/perf/ManualReadPerfWithUUID.java (revision 0ed15c778abdfe0f5f51f6133673e1619d6e56e4)
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