Home / Class/ ScheduleFutureTaskBenchmark Class — netty Architecture

ScheduleFutureTaskBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  6b87c127_0762_4f93_f59d_da8a82ce3654["ScheduleFutureTaskBenchmark"]
  f1416f6b_e228_8d92_871e_d4dde7fb2859["ScheduleFutureTaskBenchmark.java"]
  6b87c127_0762_4f93_f59d_da8a82ce3654 -->|defined in| f1416f6b_e228_8d92_871e_d4dde7fb2859
  2aa9a41c_99aa_12c7_18b8_3f166e5962b9["scheduleLots()"]
  6b87c127_0762_4f93_f59d_da8a82ce3654 -->|method| 2aa9a41c_99aa_12c7_18b8_3f166e5962b9
  e0fed5e5_f0d9_7acc_7b89_fd0814ff3404["scheduleLotsOutsideLoop()"]
  6b87c127_0762_4f93_f59d_da8a82ce3654 -->|method| e0fed5e5_f0d9_7acc_7b89_fd0814ff3404
  a1290479_03da_448e_2a0a_774f92c412f5["scheduleCancelLotsOutsideLoop()"]
  6b87c127_0762_4f93_f59d_da8a82ce3654 -->|method| a1290479_03da_448e_2a0a_774f92c412f5

Relationship Graph

Source Code

microbench/src/main/java/io/netty/util/concurrent/ScheduleFutureTaskBenchmark.java lines 36–111

@Warmup(iterations = 5, time = 3, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 3, timeUnit = TimeUnit.SECONDS)
@State(Scope.Benchmark)
public class ScheduleFutureTaskBenchmark extends AbstractMicrobenchmark {

    static final Callable<Void> NO_OP = new Callable<Void>() {
        @Override
        public Void call() throws Exception {
            return null;
        }
    };

    @State(Scope.Thread)
    public static class ThreadState {

        @Param({ "100000" })
        int num;

        AbstractScheduledEventExecutor eventLoop;

        @Setup(Level.Trial)
        public void reset() {
            eventLoop = (AbstractScheduledEventExecutor) new MultiThreadIoEventLoopGroup(
                    1, NioIoHandler.newFactory()).next();
        }

        @Setup(Level.Invocation)
        public void clear() {
            eventLoop.submit(new Runnable() {
                @Override
                public void run() {
                    eventLoop.cancelScheduledTasks();
                }
            }).awaitUninterruptibly();
        }

        @TearDown(Level.Trial)
        public void shutdown() {
            clear();
            eventLoop.parent().shutdownGracefully().awaitUninterruptibly();
        }
    }

    @Benchmark
    @Threads(3)
    public Future<?> scheduleLots(final ThreadState threadState) {
        return threadState.eventLoop.submit(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= threadState.num; i++) {
                    threadState.eventLoop.schedule(NO_OP, i, TimeUnit.HOURS);
                }
            }
        }).syncUninterruptibly();
    }

    @Benchmark
    @Threads(1)
    public Future<?> scheduleLotsOutsideLoop(final ThreadState threadState) {
        final AbstractScheduledEventExecutor eventLoop = threadState.eventLoop;
        for (int i = 1; i <= threadState.num; i++) {
            eventLoop.schedule(NO_OP, i, TimeUnit.HOURS);
        }
        return null;
    }

    @Benchmark
    @Threads(1)
    public Future<?> scheduleCancelLotsOutsideLoop(final ThreadState threadState) {
        final AbstractScheduledEventExecutor eventLoop = threadState.eventLoop;
        for (int i = 1; i <= threadState.num; i++) {
            eventLoop.schedule(NO_OP, i, TimeUnit.HOURS).cancel(false);
        }
        return null;
    }
}

Frequently Asked Questions

What is the ScheduleFutureTaskBenchmark class?
ScheduleFutureTaskBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/util/concurrent/ScheduleFutureTaskBenchmark.java.
Where is ScheduleFutureTaskBenchmark defined?
ScheduleFutureTaskBenchmark is defined in microbench/src/main/java/io/netty/util/concurrent/ScheduleFutureTaskBenchmark.java at line 36.

Analyze Your Own Codebase

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

Try Supermodel Free