xref: /aosp_15_r20/external/jackson-databind/src/test/java/perf/ManualWritePerfWithUUID.java (revision 0ed15c778abdfe0f5f51f6133673e1619d6e56e4)
1 package perf;
2 
3 import java.io.IOException;
4 import java.util.UUID;
5 
6 import com.fasterxml.jackson.core.JsonGenerationException;
7 import com.fasterxml.jackson.core.JsonGenerator;
8 
9 import com.fasterxml.jackson.databind.SerializerProvider;
10 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
11 import com.fasterxml.jackson.databind.json.JsonMapper;
12 import com.fasterxml.jackson.databind.ser.std.StdScalarSerializer;
13 
14 public class ManualWritePerfWithUUID
15     extends ObjectWriterTestBase<UUIDFast, UUIDSlow>
16 {
17     @Override
targetSizeMegs()18     protected int targetSizeMegs() { return 10; }
19 
main(String[] args)20     public static void main(String[] args) throws Exception
21     {
22         if (args.length != 0) {
23             System.err.println("Usage: java ...");
24             System.exit(1);
25         }
26         UUID[] uuids = new UUID[8];
27         for (int i = 0; i < uuids.length; ++i) {
28             uuids[i] = UUID.randomUUID();
29         }
30         new ManualWritePerfWithUUID().test(new JsonMapper(),
31                 "faster-UUID", new UUIDFast(uuids), UUIDFast.class,
32                 "JDK-UUID", new UUIDSlow(uuids), UUIDSlow.class);
33     }
34 }
35 
36 class UUIDFast
37 {
38     public final UUID[] values;
39 
UUIDFast(UUID[] v)40     public UUIDFast(UUID[] v) { values = v; }
41 }
42 
43 class UUIDSlow
44 {
45     @JsonSerialize(contentUsing=SlowSer.class)
46     public final UUID[] values;
47 
UUIDSlow(UUID[] v)48     public UUIDSlow(UUID[] v) { values = v; }
49 }
50 
51 @SuppressWarnings("serial")
52 class SlowSer extends StdScalarSerializer<UUID>
53 {
SlowSer()54     public SlowSer() { super(UUID.class); }
55 
56     @Override
serialize(UUID value, JsonGenerator jgen, SerializerProvider provider)57     public void serialize(UUID value, JsonGenerator jgen,
58             SerializerProvider provider) throws IOException,
59             JsonGenerationException {
60         jgen.writeString(value.toString());
61     }
62 }
63