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