Home / Class/ SearchBenchmark Class — netty Architecture

SearchBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  9d9772c6_6c98_049e_d077_4f14f554b382["SearchBenchmark"]
  acdfda06_9cdb_2844_9a3d_eb027a11701b["SearchBenchmark.java"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|defined in| acdfda06_9cdb_2844_9a3d_eb027a11701b
  36a94629_88c3_92a9_ba07_2457147a74ef["setup()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| 36a94629_88c3_92a9_ba07_2457147a74ef
  3a69c185_3df2_0755_909b_463b9ea2ef4f["teardown()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| 3a69c185_3df2_0755_909b_463b9ea2ef4f
  f3796305_7924_5fbb_6f7f_7c11f14ea652["indexOf()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| f3796305_7924_5fbb_6f7f_7c11f14ea652
  ee69a313_7b66_1eb7_f0a9_84c58a9d29fc["kmp()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| ee69a313_7b66_1eb7_f0a9_84c58a9d29fc
  691f8a7d_9972_3873_07a0_b5075be6606a["bitap()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| 691f8a7d_9972_3873_07a0_b5075be6606a
  d0b7fb70_4e5a_32b1_ab0b_a4dcc50a62a9["ahoCorasic()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| d0b7fb70_4e5a_32b1_ab0b_a4dcc50a62a9
  ed20694a_f0ee_226b_5e92_c3cd4630636e["randomBytes()"]
  9d9772c6_6c98_049e_d077_4f14f554b382 -->|method| ed20694a_f0ee_226b_5e92_c3cd4630636e

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/search/SearchBenchmark.java lines 40–182

@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5)
@Measurement(iterations = 5)
@Fork(1)
public class SearchBenchmark extends AbstractMicrobenchmark {

    private static final long SEED = 123;

    public enum Input {
        RANDOM_256B {
            @Override
            byte[] getNeedle(Random rnd) {
                return new byte[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };
            }
            @Override
            byte[] getHaystack(Random rnd) {
                return randomBytes(rnd, 256, ' ', 127);
            }
        },
        RANDOM_2KB {
            @Override
            byte[] getNeedle(Random rnd) {
                return new byte[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' };
            }
            @Override
            byte[] getHaystack(Random rnd) {
                return randomBytes(rnd, 2048, ' ', 127);
            }
        },
        PREDICTABLE {
            @Override
            byte[] getNeedle(Random rnd) {
                // all 0s
                return new byte[64];
            }
            @Override
            byte[] getHaystack(Random rnd) {
                // no 0s except in the very end
                byte[] bytes = randomBytes(rnd, 2048, 1, 255);
                Arrays.fill(bytes, bytes.length - 64, bytes.length, (byte) 0);
                return bytes;
            }
        },
        UNPREDICTABLE {
            @Override
            byte[] getNeedle(Random rnd) {
                return randomBytes(rnd, 64, 0, 1);
            }
            @Override
            byte[] getHaystack(Random rnd) {
                return randomBytes(rnd, 2048, 0, 1);
            }
        },
        WORST_CASE { // Bitap will fail on it because the needle is >64 bytes long
            @Override
            byte[] getNeedle(Random rnd) {
                // aa(...)aab
                byte[] needle = new byte[1024];
                Arrays.fill(needle, (byte) 'a');
                needle[needle.length - 1] = 'b';
                return needle;
            }
            @Override
            byte[] getHaystack(Random rnd) {
                // aa(...)aaa
                byte[] haystack = new byte[2048];
                Arrays.fill(haystack, (byte) 'a');
                return haystack;
            }
        };

        abstract byte[] getNeedle(Random rnd);
        abstract byte[] getHaystack(Random rnd);
    }

    @Param
    public Input input;

    @Param
    public ByteBufType bufferType;

Frequently Asked Questions

What is the SearchBenchmark class?
SearchBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/search/SearchBenchmark.java.
Where is SearchBenchmark defined?
SearchBenchmark is defined in microbench/src/main/java/io/netty/microbench/search/SearchBenchmark.java at line 40.

Analyze Your Own Codebase

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

Try Supermodel Free