Home / Type/ Input Type — netty Architecture

Input Type — netty Architecture

Architecture documentation for the Input type/interface in SearchBenchmark.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  8c05f15e_8a12_d2ae_a4c3_86ebe24532b6["Input"]
  acdfda06_9cdb_2844_9a3d_eb027a11701b["SearchBenchmark.java"]
  8c05f15e_8a12_d2ae_a4c3_86ebe24532b6 -->|defined in| acdfda06_9cdb_2844_9a3d_eb027a11701b
  style 8c05f15e_8a12_d2ae_a4c3_86ebe24532b6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/search/SearchBenchmark.java lines 48–113

    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);
    }

Frequently Asked Questions

What is the Input type?
Input is a type/interface in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/search/SearchBenchmark.java.
Where is Input defined?
Input is defined in microbench/src/main/java/io/netty/microbench/search/SearchBenchmark.java at line 48.

Analyze Your Own Codebase

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

Try Supermodel Free