HpackEncoderBenchmarkUniqueValues Class — netty Architecture
Architecture documentation for the HpackEncoderBenchmarkUniqueValues class in HpackEncoderBenchmarkUniqueValues.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 2d9d1287_c63f_dcba_fd05_9eab3f019b5f["HpackEncoderBenchmarkUniqueValues"] 89e2b136_270c_0ccc_c758_49af13878d16["HpackEncoderBenchmarkUniqueValues.java"] 2d9d1287_c63f_dcba_fd05_9eab3f019b5f -->|defined in| 89e2b136_270c_0ccc_c758_49af13878d16 8a6b096e_6668_b615_1479_0246c1079565["setup()"] 2d9d1287_c63f_dcba_fd05_9eab3f019b5f -->|method| 8a6b096e_6668_b615_1479_0246c1079565 d697d6a2_13d7_2557_b11d_772432285850["encode()"] 2d9d1287_c63f_dcba_fd05_9eab3f019b5f -->|method| d697d6a2_13d7_2557_b11d_772432285850 3e6ce29c_73ee_88de_57c3_bffef8fa5d69["generateRandomPaths()"] 2d9d1287_c63f_dcba_fd05_9eab3f019b5f -->|method| 3e6ce29c_73ee_88de_57c3_bffef8fa5d69 02609e34_11d3_fca6_9a90_91b009312990["AsciiString()"] 2d9d1287_c63f_dcba_fd05_9eab3f019b5f -->|method| 02609e34_11d3_fca6_9a90_91b009312990
Relationship Graph
Source Code
microbench/src/main/java/io/netty/handler/codec/http2/HpackEncoderBenchmarkUniqueValues.java lines 39–113
@Fork(5)
@Threads(1)
@State(Scope.Benchmark)
@Warmup(iterations = 5)
@Measurement(iterations = 5)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(Mode.AverageTime)
public class HpackEncoderBenchmarkUniqueValues extends AbstractMicrobenchmark {
@Param({"fewHeaders", "manyPaths", "tracesWithUniqueValues"})
private String type;
private final AsciiString[] PATHS = generateRandomPaths(20);
private final Random r = new Random();
private final Http2Headers[] http2Headers = new Http2Headers[1000];
private final HpackEncoder[] hpackEncoder = new HpackEncoder[1000];
private final ByteBuf output = Unpooled.buffer(10, 10000);
@Setup
public void setup() throws Http2Exception {
for (int i = 0; i < http2Headers.length; i++) {
DefaultHttp2Headers headers = new DefaultHttp2Headers();
if (type.equals("tracesWithUniqueValues")) {
headers.add(AsciiString.of("traceid"), randomAsciiString(20));
}
headers.add(AsciiString.of("key1"), AsciiString.of("value1"));
headers.add(AsciiString.of("key12"), AsciiString.of("value12"));
headers.add(AsciiString.of("key123"), AsciiString.of("value123"));
if (type.equals("manyPaths")) {
headers.add(AsciiString.of(":path"), AsciiString.of("/path/to/" + PATHS[r.nextInt(PATHS.length)]));
}
headers.add(AsciiString.of(":method"), AsciiString.of("POST"));
headers.add(AsciiString.of("content-encoding"), AsciiString.of("grpc-encoding"));
http2Headers[i] = headers;
}
for (int i = 0; i < hpackEncoder.length; i++) {
hpackEncoder[i] = new HpackEncoder();
for (Http2Headers headers: http2Headers) {
output.clear();
hpackEncoder[i].encodeHeaders(3, output, headers, Http2HeadersEncoder.NEVER_SENSITIVE);
}
}
}
@Benchmark
public void encode(Blackhole bh) throws Exception {
output.clear();
Http2Headers headers = http2Headers[r.nextInt(http2Headers.length)];
// select between many encoders to prevent the encoder state from staying in the cpu L1 cache.
HpackEncoder encoder = hpackEncoder[r.nextInt(hpackEncoder.length)];
encoder.encodeHeaders(3, output, headers, Http2HeadersEncoder.NEVER_SENSITIVE);
bh.consume(output);
}
private static AsciiString[] generateRandomPaths(int size) {
AsciiString[] paths = new AsciiString[size];
for (int i = 0; i < size; i++) {
paths[i] = randomAsciiString(20);
}
return paths;
}
private static AsciiString randomAsciiString(int length) {
return AsciiString.of(HpackHeader.createHeaders(1, 10, length, true).get(0).value);
}
}
Defined In
Source
Frequently Asked Questions
What is the HpackEncoderBenchmarkUniqueValues class?
HpackEncoderBenchmarkUniqueValues is a class in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackEncoderBenchmarkUniqueValues.java.
Where is HpackEncoderBenchmarkUniqueValues defined?
HpackEncoderBenchmarkUniqueValues is defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackEncoderBenchmarkUniqueValues.java at line 39.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free