package com.jsoniter.demo.object_with_5_fields; import com.jsoniter.CodegenAccess; import com.jsoniter.DecodingMode; import com.jsoniter.JsonIterator; import com.jsoniter.output.EncodingMode; import com.jsoniter.output.JsonStream; import com.jsoniter.spi.TypeLiteral; 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 BenchJsoniter.deser thrpt 5 7886115.451 ± 335769.969 ops/s (2.23x) BenchJsoniter.ser thrpt 5 13216858.758 ± 611385.896 ops/s (2.46x) */ @State(Scope.Thread) public class BenchJsoniter { private TestObject testObject; private JsonStream stream; private ByteArrayOutputStream byteArrayOutputStream; private byte[] testJSON; private JsonIterator iter; private TypeLiteral typeLiteral; @Setup(Level.Trial) public void benchSetup(BenchmarkParams params) { JsonStream.setMode(EncodingMode.DYNAMIC_MODE); JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH); testObject = TestObject.createTestObject(); testJSON = TestObject.createTestJSON(); stream = new JsonStream(null, 512); byteArrayOutputStream = new ByteArrayOutputStream(); iter = new JsonIterator(); typeLiteral = TypeLiteral.create(TestObject.class); } @Benchmark public void ser(Blackhole bh) throws IOException { byteArrayOutputStream.reset(); stream.reset(byteArrayOutputStream); stream.writeVal(testObject); bh.consume(byteArrayOutputStream); } @Benchmark public void deser(Blackhole bh) throws IOException { iter.reset(testJSON); bh.consume(iter.read(typeLiteral)); } public static void main(String[] args) throws IOException, RunnerException { Main.main(new String[]{ "object_with_5_fields.BenchJsoniter", "-i", "5", "-wi", "5", "-f", "1", }); } }