diff --git a/pom.xml b/pom.xml index 12776b5..b5519a8 100644 --- a/pom.xml +++ b/pom.xml @@ -135,6 +135,19 @@ 1.0.0 + + com.dslplatform + dsl-json + 0.9.5 + + + + com.dslplatform + dsl-json-processor + 0.4 + provided + + @@ -146,6 +159,10 @@ 1.7 1.7 + + com.dslplatform.json.CompiledJsonProcessor + org.openjdk.jmh.generators.BenchmarkProcessor + true true true diff --git a/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementPOJO.java b/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementPOJO.java index b8feba4..6798939 100644 --- a/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementPOJO.java +++ b/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementPOJO.java @@ -1,11 +1,14 @@ package com.cowtowncoder.jsonperf.dzone; +import com.dslplatform.json.CompiledJson; + import java.util.List; /** * Simple wrapper used to contain List of items to (de)serialize; used to avoid * need to handle generic types like Lists for root values; */ +@CompiledJson public class MeasurementPOJO { public List items; diff --git a/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementRecord.java b/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementRecord.java index 4c1e7f0..6b261b6 100644 --- a/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementRecord.java +++ b/src/main/java/com/cowtowncoder/jsonperf/dzone/MeasurementRecord.java @@ -20,7 +20,7 @@ public class MeasurementRecord public long time; // for deser - protected MeasurementRecord() { } + public MeasurementRecord() { } public MeasurementRecord(String measurementId, MeasurementType type, long duration, long time) diff --git a/src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadPojoDslJson.java b/src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadPojoDslJson.java new file mode 100755 index 0000000..f3fb155 --- /dev/null +++ b/src/main/java/com/cowtowncoder/jsonperf/dzone/read/DZoneReadPojoDslJson.java @@ -0,0 +1,31 @@ +package com.cowtowncoder.jsonperf.dzone.read; + +import com.cowtowncoder.jsonperf.dzone.MeasurementPOJO; +import com.dslplatform.json.DslJson; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Thread) +@OutputTimeUnit(TimeUnit.SECONDS) +public class DZoneReadPojoDslJson extends DZoneReadTestBase +{ + private final DslJson dsl; + + public DZoneReadPojoDslJson() + { + dsl = new DslJson<>(); + } + + @Override + public MeasurementPOJO _readItems(byte[] input) throws Exception { + return dsl.deserialize(MeasurementPOJO.class, input, input.length); + } + + @Override + public MeasurementPOJO _readItems(String input) throws Exception { + return _readItems(input.getBytes("UTF-8")); + } +} diff --git a/src/main/java/com/cowtowncoder/jsonperf/dzone/write/DZoneWriteDslJson.java b/src/main/java/com/cowtowncoder/jsonperf/dzone/write/DZoneWriteDslJson.java new file mode 100755 index 0000000..e819026 --- /dev/null +++ b/src/main/java/com/cowtowncoder/jsonperf/dzone/write/DZoneWriteDslJson.java @@ -0,0 +1,51 @@ +package com.cowtowncoder.jsonperf.dzone.write; + +import com.cowtowncoder.jsonperf.dzone.MeasurementPOJO; +import com.dslplatform.json.DslJson; +import com.dslplatform.json.JsonWriter; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; + +import java.io.OutputStream; +import java.io.Writer; +import java.util.concurrent.TimeUnit; + +@State(Scope.Thread) +@OutputTimeUnit(TimeUnit.SECONDS) +public class DZoneWriteDslJson extends DZoneWriteTestBase +{ + private final DslJson json; + private final JsonWriter writer; + + public DZoneWriteDslJson() + { + json = new DslJson<>(); + writer = new JsonWriter(); + } + + @Override + public int _writeItems(MeasurementPOJO items, OutputStream out) throws Exception + { + writer.reset(); + json.serialize(writer, items); + writer.toStream(out); + return items.size(); + } + + @Override + public int _writeItems(MeasurementPOJO items, Writer out) throws Exception + { + writer.reset(); + json.serialize(writer, items); + out.write(writer.toString()); + return items.size(); + } + + @Override + public String _writeAsString(MeasurementPOJO items) throws Exception { + writer.reset(); + json.serialize(writer, items); + return writer.toString(); + } +}