Home / Class/ HpackDecoderBenchmark Class — netty Architecture

HpackDecoderBenchmark Class — netty Architecture

Architecture documentation for the HpackDecoderBenchmark class in HpackDecoderBenchmark.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  dbf1ed73_3c87_ce6c_0048_5c86ce6f91ff["HpackDecoderBenchmark"]
  a796315d_2e66_c1b5_6c45_31e92e821da9["HpackDecoderBenchmark.java"]
  dbf1ed73_3c87_ce6c_0048_5c86ce6f91ff -->|defined in| a796315d_2e66_c1b5_6c45_31e92e821da9
  e2e6cd01_35b1_51a6_dae0_0c8d1d68716c["setup()"]
  dbf1ed73_3c87_ce6c_0048_5c86ce6f91ff -->|method| e2e6cd01_35b1_51a6_dae0_0c8d1d68716c
  53d4fe69_f711_9885_b514_b35f7c228d2e["teardown()"]
  dbf1ed73_3c87_ce6c_0048_5c86ce6f91ff -->|method| 53d4fe69_f711_9885_b514_b35f7c228d2e
  97f1784f_fbff_c6aa_9829_be0c0fcf2446["decode()"]
  dbf1ed73_3c87_ce6c_0048_5c86ce6f91ff -->|method| 97f1784f_fbff_c6aa_9829_be0c0fcf2446
  b9b7431e_5ad1_3ae0_eec4_bdfeff8bcbb4["getSerializedHeaders()"]
  dbf1ed73_3c87_ce6c_0048_5c86ce6f91ff -->|method| b9b7431e_5ad1_3ae0_eec4_bdfeff8bcbb4

Relationship Graph

Source Code

microbench/src/main/java/io/netty/handler/codec/http2/HpackDecoderBenchmark.java lines 48–101

public class HpackDecoderBenchmark extends AbstractMicrobenchmark {

    @Param
    public HpackHeadersSize size;

    @Param({ "true", "false" })
    public boolean sensitive;

    @Param({ "true", "false" })
    public boolean limitToAscii;

    private ByteBuf input;

    @Setup(Level.Trial)
    public void setup() throws Http2Exception {
        input = wrappedBuffer(getSerializedHeaders(http2Headers(size, limitToAscii), sensitive));
    }

    @TearDown(Level.Trial)
    public void teardown() {
        input.release();
    }

    @Benchmark
    @BenchmarkMode(Mode.Throughput)
    public void decode(final Blackhole bh) throws Http2Exception {
        HpackDecoder hpackDecoder = new HpackDecoder(Integer.MAX_VALUE);
        @SuppressWarnings("unchecked")
        Http2Headers headers =
                new DefaultHttp2Headers() {
            @Override
            public Http2Headers add(CharSequence name, CharSequence value) {
                bh.consume(sensitive);
                return this;
            }
        };
        hpackDecoder.decode(0, input.duplicate(), headers, true);
    }

    private byte[] getSerializedHeaders(Http2Headers headers, boolean sensitive) throws Http2Exception {
        HpackEncoder hpackEncoder = HpackUtilBenchmark.newTestEncoder();
        ByteBuf out = size.newOutBuffer();
        try {
            hpackEncoder.encodeHeaders(3 /* randomly chosen */, out, headers,
                                  sensitive ? Http2HeadersEncoder.ALWAYS_SENSITIVE
                                            : Http2HeadersEncoder.NEVER_SENSITIVE);
            byte[] bytes = new byte[out.readableBytes()];
            out.readBytes(bytes);
            return bytes;
        } finally {
            out.release();
        }
    }
}

Frequently Asked Questions

What is the HpackDecoderBenchmark class?
HpackDecoderBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackDecoderBenchmark.java.
Where is HpackDecoderBenchmark defined?
HpackDecoderBenchmark is defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackDecoderBenchmark.java at line 48.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free