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;
Source
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