Home / Class/ SearchRealDataBenchmark Class — netty Architecture

SearchRealDataBenchmark Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  be3c3597_b7fe_668e_fae4_63fa169a1033["SearchRealDataBenchmark"]
  0c42c586_7e6b_a42e_8dc3_ef1cc4273c7a["SearchRealDataBenchmark.java"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|defined in| 0c42c586_7e6b_a42e_8dc3_ef1cc4273c7a
  b410de5e_f718_2b0c_4798_8e9266704c53["setup()"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|method| b410de5e_f718_2b0c_4798_8e9266704c53
  c394b796_1620_6832_38cc_d670bfdb82a1["invocationSetup()"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|method| c394b796_1620_6832_38cc_d670bfdb82a1
  e173e440_ea9e_8554_3257_501bb04f890b["teardown()"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|method| e173e440_ea9e_8554_3257_501bb04f890b
  7acb48af_fa38_c67f_ceda_9098dfbc02e1["findFirst()"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|method| 7acb48af_fa38_c67f_ceda_9098dfbc02e1
  478adf83_933e_c1a0_b536_38b0953b6084["findFirstFromIndex()"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|method| 478adf83_933e_c1a0_b536_38b0953b6084
  f5295a2a_fb66_921c_317c_16c5b456a304["findAll()"]
  be3c3597_b7fe_668e_fae4_63fa169a1033 -->|method| f5295a2a_fb66_921c_317c_16c5b456a304

Relationship Graph

Source Code

microbench/src/main/java/io/netty/microbench/search/SearchRealDataBenchmark.java lines 47–152

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

    public enum Algorithm {
        AHO_CORASIC {
            @Override
            SearchProcessorFactory newFactory(byte[] needle) {
                return AbstractMultiSearchProcessorFactory.newAhoCorasicSearchProcessorFactory(needle);
            }
        },
        KMP {
            @Override
            SearchProcessorFactory newFactory(byte[] needle) {
                return AbstractSearchProcessorFactory.newKmpSearchProcessorFactory(needle);
            }
        },
        BITAP {
            @Override
            SearchProcessorFactory newFactory(byte[] needle) {
                return AbstractSearchProcessorFactory.newBitapSearchProcessorFactory(needle);
            }
        };
        abstract SearchProcessorFactory newFactory(byte[] needle);
    }

    @Param
    public Algorithm algorithm;

    @Param
    public ByteBufType bufferType;

    private ByteBuf haystack;
    private SearchProcessorFactory[] searchProcessorFactories;
    private SearchProcessorFactory searchProcessorFactory;

    private static final byte[][] NEEDLES = {
            "Thank You".getBytes(),
            "* Does not exist *".getBytes(),
            "<li>".getBytes(),
            "<body>".getBytes(),
            "</li>".getBytes(),
            "github.com".getBytes(),
            " Does not exist 2 ".getBytes(),
            "</html>".getBytes(),
            "\"https://".getBytes(),
            "Netty 4.1.45.Final released".getBytes()
    };

    private int needleId, searchFrom, haystackLength;

    @Setup
    public void setup() throws IOException {
        File haystackFile = ResourcesUtil.getFile(SearchRealDataBenchmark.class, "netty-io-news.html");
        byte[] haystackBytes = Files.readAllBytes(haystackFile.toPath());
        haystack = bufferType.newBuffer(haystackBytes);

        needleId = 0;
        searchFrom = 0;
        haystackLength = haystack.readableBytes();

        searchProcessorFactories = new SearchProcessorFactory[NEEDLES.length];
        for (int i = 0; i < NEEDLES.length; i++) {
            searchProcessorFactories[i] = algorithm.newFactory(NEEDLES[i]);
        }
    }

    @Setup(Level.Invocation)
    public void invocationSetup() {
        needleId = (needleId + 1) % searchProcessorFactories.length;
        searchProcessorFactory = searchProcessorFactories[needleId];
    }

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

    @Benchmark

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free