Home / Class/ ReadOnlyHttp2HeadersBenchmark Class — netty Architecture

ReadOnlyHttp2HeadersBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  83d0ced7_4100_8aad_a42f_eef34910db2d["ReadOnlyHttp2HeadersBenchmark"]
  b9a245c4_ff90_f557_bfa3_5e4c2f43420a["ReadOnlyHttp2HeadersBenchmark.java"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|defined in| b9a245c4_ff90_f557_bfa3_5e4c2f43420a
  498e503c_c036_e105_d2af_dee55ab6cea2["setUp()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| 498e503c_c036_e105_d2af_dee55ab6cea2
  f6db23c0_bb93_327d_7a97_abf8acb5cfae["defaultTrailers()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| f6db23c0_bb93_327d_7a97_abf8acb5cfae
  fc6f6410_182f_7715_a44e_80f597ef0608["readOnlyTrailers()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| fc6f6410_182f_7715_a44e_80f597ef0608
  519a1b00_bd69_1364_1b96_3bbad6d18a7b["defaultClientHeaders()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| 519a1b00_bd69_1364_1b96_3bbad6d18a7b
  d192d3af_6712_5913_7570_8d65340256d6["readOnlyClientHeaders()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| d192d3af_6712_5913_7570_8d65340256d6
  6c64339b_9990_8f49_c35e_7a26c9983f90["defaultServerHeaders()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| 6c64339b_9990_8f49_c35e_7a26c9983f90
  98d518ca_2336_a42b_9180_199fc728b2a5["readOnlyServerHeaders()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| 98d518ca_2336_a42b_9180_199fc728b2a5
  5ebb10b4_1922_8fb1_7dab_ae0ee27555fa["iterate()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| 5ebb10b4_1922_8fb1_7dab_ae0ee27555fa
  dd7e5d9c_8378_bf0c_fbbf_043effadd94b["buildPairs()"]
  83d0ced7_4100_8aad_a42f_eef34910db2d -->|method| dd7e5d9c_8378_bf0c_fbbf_043effadd94b

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/headers/ReadOnlyHttp2HeadersBenchmark.java lines 44–138

@Threads(1)
@State(Scope.Benchmark)
@Fork(2)
@Warmup(iterations = 10)
@Measurement(iterations = 10)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class ReadOnlyHttp2HeadersBenchmark extends AbstractMicrobenchmark {
    private AsciiString[] headerNames;
    private AsciiString[] headerValues;

    @Param({ "1", "5", "10", "20" })
    public int headerCount;

    private final AsciiString path = new AsciiString("/BigDynamicPayload");
    private final AsciiString authority = new AsciiString("io.netty");

    @Setup
    public void setUp() throws Exception {
        headerNames = new AsciiString[headerCount];
        headerValues = new AsciiString[headerCount];
        for (int i = 0; i < headerCount; ++i) {
            headerNames[i] = new AsciiString("key-" + i);
            headerValues[i] = new AsciiString(UUID.randomUUID().toString());
        }
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void defaultTrailers(Blackhole bh) {
        Http2Headers headers = new DefaultHttp2Headers(false);
        for (int i = 0; i < headerCount; ++i) {
            headers.add(headerNames[i], headerValues[i]);
        }
        iterate(headers, bh);
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void readOnlyTrailers(Blackhole bh) {
        iterate(ReadOnlyHttp2Headers.trailers(false, buildPairs()), bh);
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void defaultClientHeaders(Blackhole bh) {
        Http2Headers headers = new DefaultHttp2Headers(false);
        for (int i = 0; i < headerCount; ++i) {
            headers.add(headerNames[i], headerValues[i]);
        }
        headers.method(HttpMethod.POST.asciiName());
        headers.scheme(HttpScheme.HTTPS.name());
        headers.path(path);
        headers.authority(authority);
        iterate(headers, bh);
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void readOnlyClientHeaders(Blackhole bh) {
        iterate(ReadOnlyHttp2Headers.clientHeaders(false, HttpMethod.POST.asciiName(), path,
                                                          HttpScheme.HTTPS.name(), authority, buildPairs()), bh);
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void defaultServerHeaders(Blackhole bh) {
        Http2Headers headers = new DefaultHttp2Headers(false);
        for (int i = 0; i < headerCount; ++i) {
            headers.add(headerNames[i], headerValues[i]);
        }
        headers.status(HttpResponseStatus.OK.codeAsText());
        iterate(headers, bh);
    }

    @Benchmark
    @BenchmarkMode(Mode.AverageTime)
    public void readOnlyServerHeaders(Blackhole bh) {
        iterate(ReadOnlyHttp2Headers.serverHeaders(false, HttpResponseStatus.OK.codeAsText(), buildPairs()), bh);
    }

    private static void iterate(Http2Headers headers, Blackhole bh) {

Frequently Asked Questions

What is the ReadOnlyHttp2HeadersBenchmark class?
ReadOnlyHttp2HeadersBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/headers/ReadOnlyHttp2HeadersBenchmark.java.
Where is ReadOnlyHttp2HeadersBenchmark defined?
ReadOnlyHttp2HeadersBenchmark is defined in microbench/src/main/java/io/netty/microbench/headers/ReadOnlyHttp2HeadersBenchmark.java at line 44.

Analyze Your Own Codebase

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

Try Supermodel Free