Home / Class/ CompositeByteBufWriteOutBenchmark Class — netty Architecture

CompositeByteBufWriteOutBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  c79b51b6_5774_48a2_56c0_7734c395523c["CompositeByteBufWriteOutBenchmark"]
  d3905ca8_e361_8ed3_1ee3_13b40b6d9b4b["CompositeByteBufWriteOutBenchmark.java"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|defined in| d3905ca8_e361_8ed3_1ee3_13b40b6d9b4b
  3cdddbb9_85c8_bb88_c8d7_0424617908aa["jvmArgs()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| 3cdddbb9_85c8_bb88_c8d7_0424617908aa
  01fd20e0_ecf8_758b_a4bc_74eb918bc107["setup()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| 01fd20e0_ecf8_758b_a4bc_74eb918bc107
  d8643097_bd61_7638_5cc2_8fd6c8f3c09a["teardown()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| d8643097_bd61_7638_5cc2_8fd6c8f3c09a
  5d885259_bbf3_1208_3f4d_9c5fe6dc42d8["writeCBB()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| 5d885259_bbf3_1208_3f4d_9c5fe6dc42d8
  cb165fe6_dc5e_7b45_4721_d8ba02cfa232["writeFCBB()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| cb165fe6_dc5e_7b45_4721_d8ba02cfa232
  a1c07999_8d8e_f181_9363_06281426af81["makeSmallChunks()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| a1c07999_8d8e_f181_9363_06281426af81
  aff14b4b_296e_794a_94a9_00098b365e0a["makeLargeChunks()"]
  c79b51b6_5774_48a2_56c0_7734c395523c -->|method| aff14b4b_296e_794a_94a9_00098b365e0a

Relationship Graph

Source Code

microbench/src/main/java/io/netty/buffer/CompositeByteBufWriteOutBenchmark.java lines 33–120

@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 12, time = 1, timeUnit = TimeUnit.SECONDS)
public class CompositeByteBufWriteOutBenchmark extends AbstractMicrobenchmark {

    public enum ByteBufType {
        SMALL_CHUNKS {
            @Override
            ByteBuf[] sourceBuffers(int length) {
                return makeSmallChunks(length);
            }
        },
        LARGE_CHUNKS {
            @Override
            ByteBuf[] sourceBuffers(int length) {
                return makeLargeChunks(length);
            }
        };
        abstract ByteBuf[] sourceBuffers(int length);
    }

    @Override
    protected String[] jvmArgs() {
        // Ensure we minimize the GC overhead by sizing the heap big enough.
        return new String[] { "-XX:MaxDirectMemorySize=2g", "-Xmx4g", "-Xms4g", "-Xmn3g" };
    }

    @Param({
            "64",
            "1024",
            "10240",
            "102400",
            "1024000"
    })
    public int size;

    @Param
    public ByteBufType bufferType;

    private ByteBuf targetBuffer;

    private ByteBuf[] sourceBufs;

    @Setup
    public void setup() {
        targetBuffer = PooledByteBufAllocator.DEFAULT.directBuffer(size + 2048);
        sourceBufs = bufferType.sourceBuffers(size);
    }

    @TearDown
    public void teardown() {
        targetBuffer.release();
    }

    @Benchmark
    public int writeCBB() {
        ByteBuf cbb = Unpooled.wrappedBuffer(Integer.MAX_VALUE, sourceBufs); // CompositeByteBuf
        return targetBuffer.clear().writeBytes(cbb).readableBytes();
    }

    @Benchmark
    public int writeFCBB() {
        ByteBuf cbb = Unpooled.wrappedUnmodifiableBuffer(sourceBufs); // FastCompositeByteBuf
        return targetBuffer.clear().writeBytes(cbb).readableBytes();
    }

    private static ByteBuf[] makeSmallChunks(int length) {

        List<ByteBuf> buffers = new ArrayList<ByteBuf>(((length + 1) / 48) * 9);
        for (int i = 0; i < length + 48; i += 48) {
            for (int j = 4; j <= 12; j++) {
                buffers.add(wrappedBuffer(new byte[j]));
            }
        }

        return buffers.toArray(new ByteBuf[0]);
    }

    private static ByteBuf[] makeLargeChunks(int length) {

        List<ByteBuf> buffers = new ArrayList<ByteBuf>((length + 1) / 768);
        for (int i = 0; i < length + 1536; i += 1536) {

Frequently Asked Questions

What is the CompositeByteBufWriteOutBenchmark class?
CompositeByteBufWriteOutBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/buffer/CompositeByteBufWriteOutBenchmark.java.
Where is CompositeByteBufWriteOutBenchmark defined?
CompositeByteBufWriteOutBenchmark is defined in microbench/src/main/java/io/netty/buffer/CompositeByteBufWriteOutBenchmark.java at line 33.

Analyze Your Own Codebase

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

Try Supermodel Free