DefaultChannelPipelineDuplexHandlerBenchmark Class — netty Architecture
Architecture documentation for the DefaultChannelPipelineDuplexHandlerBenchmark class in DefaultChannelPipelineDuplexHandlerBenchmark.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 191ff36a_e081_3fd5_1f17_c0403ac3c58c["DefaultChannelPipelineDuplexHandlerBenchmark"] fd389e7d_8a70_7b19_be15_b97c13e5f34e["DefaultChannelPipelineDuplexHandlerBenchmark.java"] 191ff36a_e081_3fd5_1f17_c0403ac3c58c -->|defined in| fd389e7d_8a70_7b19_be15_b97c13e5f34e 11581a31_8819_da8a_47ac_bcf90616fc72["setup()"] 191ff36a_e081_3fd5_1f17_c0403ac3c58c -->|method| 11581a31_8819_da8a_47ac_bcf90616fc72 b0dc5979_f987_2166_ca66_b24c65210162["tearDown()"] 191ff36a_e081_3fd5_1f17_c0403ac3c58c -->|method| b0dc5979_f987_2166_ca66_b24c65210162 96b42531_105f_e832_54c4_850e7f7533d9["propagateEvent()"] 191ff36a_e081_3fd5_1f17_c0403ac3c58c -->|method| 96b42531_105f_e832_54c4_850e7f7533d9 418d8b37_6da8_9e80_54d7_db0077698b43["parallelPropagateEvent()"] 191ff36a_e081_3fd5_1f17_c0403ac3c58c -->|method| 418d8b37_6da8_9e80_54d7_db0077698b43
Relationship Graph
Source Code
microbench/src/main/java/io/netty/microbench/channel/DefaultChannelPipelineDuplexHandlerBenchmark.java lines 36–121
@Warmup(iterations = 5, time = 1)
@Measurement(iterations = 5, time = 1)
@State(Scope.Thread)
public class DefaultChannelPipelineDuplexHandlerBenchmark extends AbstractMicrobenchmark {
private ChannelPipeline pipeline;
private EmbeddedChannel channel;
@Param({"true", "false"})
private boolean duplex;
@Setup
public void setup() {
channel = new EmbeddedChannel() {
@Override
public void runPendingTasks() {
// NO-OP to reduce noise on flush
}
};
// disabling auto-read to reduce noise on flush
channel.config().setAutoRead(false);
pipeline = channel.pipeline();
pipeline.addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelReadComplete(final ChannelHandlerContext ctx) {
ctx.fireChannelReadComplete();
}
});
// Duplex handlers implements both out/in interfaces causing a scalability issue
// see https://bugs.openjdk.org/browse/JDK-8180450
if (duplex) {
pipeline.addLast(new ChannelDuplexHandler() {
@Override
public void channelReadComplete(final ChannelHandlerContext ctx) {
ctx.fireChannelReadComplete();
}
@Override
public void flush(final ChannelHandlerContext ctx) {
ctx.flush();
}
});
pipeline.addLast(new ChannelDuplexHandler() {
@Override
public void channelReadComplete(final ChannelHandlerContext ctx) {
ctx.flush();
}
});
} else {
pipeline.addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelReadComplete(final ChannelHandlerContext ctx) {
ctx.fireChannelReadComplete();
}
});
pipeline.addLast(new ChannelOutboundHandlerAdapter() {
@Override
public void flush(final ChannelHandlerContext ctx) {
ctx.flush();
}
});
pipeline.addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelReadComplete(final ChannelHandlerContext ctx) {
ctx.flush();
}
});
}
}
@TearDown
public void tearDown() {
pipeline.channel().close();
}
@Benchmark
public void propagateEvent(Blackhole hole) {
hole.consume(pipeline.fireChannelReadComplete());
}
@Benchmark
Source
Frequently Asked Questions
What is the DefaultChannelPipelineDuplexHandlerBenchmark class?
DefaultChannelPipelineDuplexHandlerBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/channel/DefaultChannelPipelineDuplexHandlerBenchmark.java.
Where is DefaultChannelPipelineDuplexHandlerBenchmark defined?
DefaultChannelPipelineDuplexHandlerBenchmark is defined in microbench/src/main/java/io/netty/microbench/channel/DefaultChannelPipelineDuplexHandlerBenchmark.java at line 36.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free