package com.jsoniter.demo.object_with_10_fields;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
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
BenchJackson.deser thrpt 5 3536224.629 ± 22392.435 ops/s
BenchJackson.ser thrpt 5 5373951.842 ± 325328.400 ops/s
*/
@State(Scope.Thread)
public class BenchJackson {
private ObjectMapper objectMapper;
private TypeReference<TestObject> typeReference;
private ByteArrayOutputStream byteArrayOutputStream;
private byte[] testJSON;
private TestObject testObject;
@Setup(Level.Trial)
public void benchSetup(BenchmarkParams params) {
objectMapper = new ObjectMapper();
objectMapper.registerModule(new AfterburnerModule());
typeReference = new TypeReference<TestObject>() {
};
byteArrayOutputStream = new ByteArrayOutputStream();
testJSON = TestObject.createTestJSON();
testObject = TestObject.createTestObject();
}
@Benchmark
public void ser(Blackhole bh) throws IOException {
byteArrayOutputStream.reset();
objectMapper.writeValue(byteArrayOutputStream, testObject);
bh.consume(byteArrayOutputStream);
}
@Benchmark
public void deser(Blackhole bh) throws IOException {
bh.consume(objectMapper.readValue(testJSON, typeReference));
}
public static void main(String[] args) throws IOException, RunnerException {
Main.main(new String[]{
"object_with_10_fields.BenchJackson",
"-i", "5",
"-wi", "5",
"-f", "1",
});
}
}