| package perf; |
| |
| import java.io.IOException; |
| import java.util.UUID; |
| |
| import com.fasterxml.jackson.core.JsonProcessingException; |
| import com.fasterxml.jackson.databind.DeserializationContext; |
| import com.fasterxml.jackson.databind.ObjectMapper; |
| import com.fasterxml.jackson.databind.annotation.JsonDeserialize; |
| import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer; |
| |
| public class ManualReadPerfWithUUID extends ObjectReaderTestBase |
| { |
| static class UUIDNative { |
| public UUID[] ids; |
| public UUIDNative() { } |
| public UUIDNative(UUID[] ids) { this.ids = ids; } |
| } |
| |
| @Override |
| protected int targetSizeMegs() { return 8; } |
| |
| @SuppressWarnings("serial") |
| static class SlowDeser extends FromStringDeserializer<UUID> |
| { |
| public SlowDeser() { super(UUID.class); } |
| |
| @Override |
| protected UUID _deserialize(String id, DeserializationContext ctxt) |
| throws IOException, JsonProcessingException |
| { |
| return UUID.fromString(id); |
| } |
| } |
| |
| static class UUIDWithJdk { |
| @JsonDeserialize(contentUsing=SlowDeser.class) |
| public UUID[] ids; |
| public UUIDWithJdk() { } |
| public UUIDWithJdk(UUID[] ids) { this.ids = ids; } |
| } |
| |
| public static void main(String[] args) throws Exception |
| { |
| if (args.length != 0) { |
| System.err.println("Usage: java ..."); |
| System.exit(1); |
| } |
| UUID[] uuids = new UUID[8]; |
| for (int i = 0; i < uuids.length; ++i) { |
| uuids[i] = UUID.randomUUID(); |
| } |
| UUIDNative input1 = new UUIDNative(uuids); |
| UUIDWithJdk input2 = new UUIDWithJdk(uuids); |
| |
| ObjectMapper m = new ObjectMapper(); |
| |
| new ManualReadPerfWithRecord().testFromBytes( |
| m, "JSON-as-Object", input1, UUIDNative.class, |
| m, "JSON-as-Array", input2, UUIDWithJdk.class); |
| } |
| } |