Home / Class/ HpackEncoderBenchmark Class — netty Architecture

HpackEncoderBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  995fbf9b_9fb0_36cd_ba95_60f0c2f27893["HpackEncoderBenchmark"]
  1b990c2b_27fd_de90_7960_2e5806807012["HpackEncoderBenchmark.java"]
  995fbf9b_9fb0_36cd_ba95_60f0c2f27893 -->|defined in| 1b990c2b_27fd_de90_7960_2e5806807012
  39571027_3942_8e99_3985_7219ec2b5521["setup()"]
  995fbf9b_9fb0_36cd_ba95_60f0c2f27893 -->|method| 39571027_3942_8e99_3985_7219ec2b5521
  03dd25bb_e6db_9173_7242_0410d068ce7f["tearDown()"]
  995fbf9b_9fb0_36cd_ba95_60f0c2f27893 -->|method| 03dd25bb_e6db_9173_7242_0410d068ce7f
  1358acbe_955a_eaa9_a7ab_63ea501c4242["encode()"]
  995fbf9b_9fb0_36cd_ba95_60f0c2f27893 -->|method| 1358acbe_955a_eaa9_a7ab_63ea501c4242

Relationship Graph

Source Code

microbench/src/main/java/io/netty/handler/codec/http2/HpackEncoderBenchmark.java lines 56–111

@Fork(1)
@Threads(1)
@State(Scope.Benchmark)
@Warmup(iterations = 5)
@Measurement(iterations = 5)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class HpackEncoderBenchmark extends AbstractMicrobenchmark {

    @Param
    public HpackHeadersSize size;

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

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

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

    private Http2Headers http2Headers;
    private ByteBuf output;
    private Http2HeadersEncoder.SensitivityDetector sensitivityDetector;

    @Setup(Level.Trial)
    public void setup() {
        http2Headers = HpackBenchmarkUtil.http2Headers(size, limitToAscii);
        if (duplicates) {
            int size = http2Headers.size();
            if (size > 0) {
                Iterator<Map.Entry<CharSequence, CharSequence>> itr = http2Headers.iterator();
                Map.Entry<CharSequence, CharSequence> entry = itr.next();
                http2Headers.clear();
                for (int i = 0; i < size; ++i) {
                    http2Headers.add(entry.getKey(), entry.getValue());
                }
            }
        }
        output = size.newOutBuffer();
        sensitivityDetector = sensitive ? Http2HeadersEncoder.ALWAYS_SENSITIVE : Http2HeadersEncoder.NEVER_SENSITIVE;
    }

    @TearDown(Level.Trial)
    public void tearDown() {
        output.release();
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void encode(Blackhole bh) throws Exception {
        HpackEncoder hpackEncoder = HpackUtilBenchmark.newTestEncoder();
        output.clear();
        hpackEncoder.encodeHeaders(3 /*randomly chosen*/, output, http2Headers, sensitivityDetector);
        bh.consume(output);
    }
}

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free