package com.jsoniter.demo.object_with_10_fields; import com.dslplatform.json.CustomJsonReader; import com.dslplatform.json.ExternalSerialization; import com.dslplatform.json.JsonWriter; import org.openjdk.jmh.Main; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.infra.BenchmarkParams; import org.openjdk.jmh.infra.Blackhole; import org.openjdk.jmh.runner.RunnerException; import java.io.ByteArrayOutputStream; import java.io.IOException; /* Benchmark Mode Cnt Score Error Units BenchDslJson.deser thrpt 5 22328042.432 ± 311925.080 ops/s (3.67x) BenchDslJson.ser thrpt 5 17639416.242 ± 136738.841 ops/s (2.17x) */ @State(Scope.Thread) public class BenchDslJson { private TestObject testObject; private JsonWriter jsonWriter; private ByteArrayOutputStream byteArrayOutputStream; private byte[] testJSON; private CustomJsonReader reader; @Setup(Level.Trial) public void benchSetup(BenchmarkParams params) { testObject = TestObject.createTestObject(); testJSON = TestObject.createTestJSON(); jsonWriter = new JsonWriter(); byteArrayOutputStream = new ByteArrayOutputStream(); reader = new CustomJsonReader(testJSON); } @Benchmark public void ser(Blackhole bh) throws IOException { jsonWriter.reset(); byteArrayOutputStream.reset(); ExternalSerialization.serialize(testObject, jsonWriter, false); jsonWriter.toStream(byteArrayOutputStream); bh.consume(byteArrayOutputStream); } @Benchmark public void deser(Blackhole bh) throws IOException { reader.reset(); reader.read(); reader.getNextToken(); TestObject obj = new TestObject(); ExternalSerialization.deserialize(obj, reader); bh.consume(obj); } public static void main(String[] args) throws IOException, RunnerException { Main.main(new String[]{ "object_with_10_fields.BenchDslJson", "-i", "5", "-wi", "5", "-f", "1", }); } }