HpackUtilBenchmark Class — netty Architecture
Architecture documentation for the HpackUtilBenchmark class in HpackUtilBenchmark.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 6fbca480_1d41_a552_c2e8_0045d9099068["HpackUtilBenchmark"] 6c1cb4fb_5472_fece_efc2_b99b613e68a4["HpackUtilBenchmark.java"] 6fbca480_1d41_a552_c2e8_0045d9099068 -->|defined in| 6c1cb4fb_5472_fece_efc2_b99b613e68a4 818ae7d2_7151_b7e1_50e3_43311a1b12c6["setup()"] 6fbca480_1d41_a552_c2e8_0045d9099068 -->|method| 818ae7d2_7151_b7e1_50e3_43311a1b12c6 92eb2e9e_19bb_2429_5659_8e4c8557ed1d["oldEquals()"] 6fbca480_1d41_a552_c2e8_0045d9099068 -->|method| 92eb2e9e_19bb_2429_5659_8e4c8557ed1d be919473_c157_01ab_9fd8_5f5e954db131["newEquals()"] 6fbca480_1d41_a552_c2e8_0045d9099068 -->|method| be919473_c157_01ab_9fd8_5f5e954db131 2a679bc3_c774_a6d8_2d4f_3ce419720ebc["HpackEncoder()"] 6fbca480_1d41_a552_c2e8_0045d9099068 -->|method| 2a679bc3_c774_a6d8_2d4f_3ce419720ebc
Relationship Graph
Source Code
microbench/src/main/java/io/netty/handler/codec/http2/HpackUtilBenchmark.java lines 37–113
@Threads(1)
@Warmup(iterations = 5)
@Measurement(iterations = 5)
public class HpackUtilBenchmark extends AbstractMicrobenchmark {
@Param
public HpackHeadersSize size;
private List<HpackHeader> hpackHeaders;
@Setup(Level.Trial)
public void setup() {
hpackHeaders = HpackBenchmarkUtil.headers(size, false);
}
@Benchmark
public int oldEquals() {
int count = 0;
for (int i = 0; i < hpackHeaders.size(); ++i) {
HpackHeader hpackHeader = hpackHeaders.get(i);
if (oldEquals(hpackHeader.name, hpackHeader.name)) {
++count;
}
}
return count;
}
@Benchmark
public int newEquals() {
int count = 0;
for (int i = 0; i < hpackHeaders.size(); ++i) {
HpackHeader hpackHeader = hpackHeaders.get(i);
if (newEquals(hpackHeader.name, hpackHeader.name)) {
++count;
}
}
return count;
}
private static boolean oldEquals(CharSequence s1, CharSequence s2) {
if (s1.length() != s2.length()) {
return false;
}
char c = 0;
for (int i = 0; i < s1.length(); i++) {
c |= s1.charAt(i) ^ s2.charAt(i);
}
return c == 0;
}
private static boolean newEquals(CharSequence s1, CharSequence s2) {
if (s1 instanceof AsciiString && s2 instanceof AsciiString) {
if (s1.length() != s2.length()) {
return false;
}
AsciiString s1Ascii = (AsciiString) s1;
AsciiString s2Ascii = (AsciiString) s2;
return PlatformDependent.equalsConstantTime(s1Ascii.array(), s1Ascii.arrayOffset(),
s2Ascii.array(), s2Ascii.arrayOffset(), s1.length()) != 0;
}
return ConstantTimeUtils.equalsConstantTime(s1, s2) != 0;
}
static HpackEncoder newTestEncoder() {
HpackEncoder hpackEncoder = new HpackEncoder();
ByteBuf buf = Unpooled.buffer();
try {
hpackEncoder.setMaxHeaderTableSize(buf, MAX_HEADER_TABLE_SIZE);
hpackEncoder.setMaxHeaderListSize(MAX_HEADER_LIST_SIZE);
} catch (Http2Exception e) {
throw new Error("max size not allowed?", e);
} finally {
buf.release();
}
return hpackEncoder;
}
}
Source
Frequently Asked Questions
What is the HpackUtilBenchmark class?
HpackUtilBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackUtilBenchmark.java.
Where is HpackUtilBenchmark defined?
HpackUtilBenchmark is defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackUtilBenchmark.java at line 37.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free