VarintDecodingBenchmark Class — netty Architecture
Architecture documentation for the VarintDecodingBenchmark class in VarintDecodingBenchmark.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f083df4b_1f17_0498_9ee1_c9dd1d401573["VarintDecodingBenchmark"] f116556f_1b44_6dd1_8b28_55c99fd83a3c["VarintDecodingBenchmark.java"] f083df4b_1f17_0498_9ee1_c9dd1d401573 -->|defined in| f116556f_1b44_6dd1_8b28_55c99fd83a3c 598f5b25_6a52_52e1_2144_0c2a5de1a7c0["init()"] f083df4b_1f17_0498_9ee1_c9dd1d401573 -->|method| 598f5b25_6a52_52e1_2144_0c2a5de1a7c0 091879d0_a1de_111d_a8d3_371faaffe800["ByteBuf()"] f083df4b_1f17_0498_9ee1_c9dd1d401573 -->|method| 091879d0_a1de_111d_a8d3_371faaffe800 8ea74eed_880e_f756_20e9_c0ae0c8202bc["oldReadRawVarint32()"] f083df4b_1f17_0498_9ee1_c9dd1d401573 -->|method| 8ea74eed_880e_f756_20e9_c0ae0c8202bc 1bee8094_9c37_8867_6865_0c83bfe3eeb2["readRawVarint32()"] f083df4b_1f17_0498_9ee1_c9dd1d401573 -->|method| 1bee8094_9c37_8867_6865_0c83bfe3eeb2
Relationship Graph
Source Code
microbench/src/main/java/io/netty/handler/codec/protobuf/VarintDecodingBenchmark.java lines 36–195
@State(Scope.Benchmark)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(org.openjdk.jmh.annotations.Mode.AverageTime)
@Fork(2)
@Warmup(iterations = 10, time = 400, timeUnit = java.util.concurrent.TimeUnit.MILLISECONDS)
@Measurement(iterations = 5, time = 400, timeUnit = java.util.concurrent.TimeUnit.MILLISECONDS)
public class VarintDecodingBenchmark extends AbstractMicrobenchmark {
private static final int SEED = 0;
// Ryzen 7950X is exceptionally good to predict branches, so we need to use A LOT of inputs!
@Param({ "1", "128", "128000" })
int inputs;
public enum InputDistribution {
SMALL,
LARGE,
MEDIUM,
ALL
}
@Param
InputDistribution inputDistribution;
ByteBuf[] data;
int index;
@Setup
public void init() {
ByteBuf[] dataSet;
switch (inputDistribution) {
case SMALL:
dataSet = new ByteBuf[] {
generateData(1, 1),
generateData(2, 2),
generateData(3, 3)
};
break;
case LARGE:
dataSet = new ByteBuf[] {
generateData(5, 5)
};
if (inputs > 1) {
System.exit(1);
}
break;
case MEDIUM:
dataSet = new ByteBuf[] {
generateData(1, 5),
generateData(2, 5),
generateData(3, 5),
generateData(4, 5)
};
break;
case ALL:
dataSet = new ByteBuf[] {
generateData(1, 1),
generateData(2, 2),
generateData(3, 3),
generateData(1, 5),
generateData(2, 5),
generateData(3, 5),
generateData(4, 5),
generateData(5, 5)
};
break;
default:
throw new RuntimeException("Unknown distribution");
}
data = new ByteBuf[inputs];
Random rnd = new Random(SEED);
for (int i = 0; i < inputs; i++) {
data[i] = dataSet[rnd.nextInt(dataSet.length)];
}
index = 0;
}
public static ByteBuf generateData(int varintLength, int capacity) {
byte[] bytes = new byte[capacity];
for (int i = 0; i < (varintLength - 1); i++) {
bytes[i] = (byte) 150;
}
Source
Frequently Asked Questions
What is the VarintDecodingBenchmark class?
VarintDecodingBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/protobuf/VarintDecodingBenchmark.java.
Where is VarintDecodingBenchmark defined?
VarintDecodingBenchmark is defined in microbench/src/main/java/io/netty/handler/codec/protobuf/VarintDecodingBenchmark.java at line 36.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free