package com.jsoniter.demo.object_with_5_fields; import org.apache.thrift.TDeserializer; import org.apache.thrift.TException; import org.apache.thrift.TSerializer; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TCompactProtocol; import org.apache.thrift.protocol.TTupleProtocol; import org.junit.Test; 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.IOException; /* Tuple Benchmark Mode Cnt Score Error Units BenchThrift.deser thrpt 5 4894731.174 ± 190486.954 ops/s (1.38x) BenchThrift.ser thrpt 5 2537935.619 ± 132875.762 ops/s (0.47x) Compact Benchmark Mode Cnt Score Error Units BenchThrift.deser thrpt 5 4490620.091 ± 118728.895 ops/s BenchThrift.ser thrpt 5 2114218.709 ± 66750.207 ops/s Binary Benchmark Mode Cnt Score Error Units BenchThrift.deser thrpt 5 4463916.092 ± 74085.264 ops/s BenchThrift.ser thrpt 5 1780672.495 ± 21550.292 ops/s */ @State(Scope.Thread) public class BenchThrift { private TSerializer serializer; private ThriftTestObject testObject; private TDeserializer deserializer; private byte[] testData; @Setup(Level.Trial) public void benchSetup(BenchmarkParams params) throws TException { testObject = new ThriftTestObject(); testObject.field1 = "field1"; testObject.field2 = "field2"; testObject.field3 = "field3"; testObject.field4 = "field4"; testObject.field5 = "field5"; // serializer = new TSerializer(new TTupleProtocol.Factory()); serializer = new TSerializer(new TCompactProtocol.Factory()); // serializer = new TSerializer(new TBinaryProtocol.Factory()); // deserializer = new TDeserializer(new TTupleProtocol.Factory()); deserializer = new TDeserializer(new TCompactProtocol.Factory()); // deserializer = new TDeserializer(new TBinaryProtocol.Factory()); testData = serializer.serialize(testObject); } @Test public void test() throws TException { byte[] output = new TSerializer(new TCompactProtocol.Factory()).serialize(testObject); System.out.println(output.length); } @Benchmark public void ser(Blackhole bh) throws TException { bh.consume(serializer.serialize(testObject)); } @Benchmark public void deser(Blackhole bh) throws TException { ThriftTestObject obj = new ThriftTestObject(); deserializer.deserialize(testObject, testData); bh.consume(obj); } public static void main(String[] args) throws IOException, RunnerException { Main.main(new String[]{ "object_with_5_fields.BenchThrift", "-i", "5", "-wi", "5", "-f", "1", }); } }