EscapeCsvBenchmark Class — netty Architecture
Architecture documentation for the EscapeCsvBenchmark class in EscapeCsvBenchmark.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD a9ac85cd_5aef_ac61_8d7f_56740828548d["EscapeCsvBenchmark"] 8c3bb4ff_d636_1967_40c5_aae3467845f8["EscapeCsvBenchmark.java"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|defined in| 8c3bb4ff_d636_1967_40c5_aae3467845f8 502b8a21_477d_bd78_cd15_b62c529e3727["ChainedOptionsBuilder()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| 502b8a21_477d_bd78_cd15_b62c529e3727 f62c9214_6cb5_16a5_3b22_7c524775c513["CharSequence()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| f62c9214_6cb5_16a5_3b22_7c524775c513 5182625f_3e1c_8086_797e_74c33412724a["StringBuilder()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| 5182625f_3e1c_8086_797e_74c33412724a f2a5a1c5_6720_a94f_416e_126761ca268d["isDoubleQuote()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| f2a5a1c5_6720_a94f_416e_126761ca268d bb145252_90dd_6f86_7df4_e68e6836fc48["indexOfFirstNonOwsChar()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| bb145252_90dd_6f86_7df4_e68e6836fc48 32cf7847_6506_a490_6e8b_b1fd1c61c975["indexOfLastNonOwsChar()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| 32cf7847_6506_a490_6e8b_b1fd1c61c975 31b59ff1_91f4_b31d_31e9_3c49db29e722["isOws()"] a9ac85cd_5aef_ac61_8d7f_56740828548d -->|method| 31b59ff1_91f4_b31d_31e9_3c49db29e722
Relationship Graph
Source Code
microbench/src/main/java/io/netty/microbench/internal/EscapeCsvBenchmark.java lines 32–160
@Threads(1)
@Warmup(iterations = 3)
@Measurement(iterations = 3)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public class EscapeCsvBenchmark extends AbstractMicrobenchmark {
private static final String value1024;
private static final String value1024commaAtEnd;
static {
StringBuilder s1024 = new StringBuilder(1024);
while (s1024.length() < 1024) {
s1024.append('A' + s1024.length() % 10);
}
value1024 = s1024.toString();
value1024commaAtEnd = value1024 + ',';
}
@Param("netty")
private String value;
@Override
protected ChainedOptionsBuilder newOptionsBuilder() throws Exception {
return super.newOptionsBuilder()
.param("value", "netty")
.param("value", "\"123\"", "need\"escape", "need,quotes", " trim-me ", "short-comma-ended,")
.param("value", value1024)
.param("value", value1024commaAtEnd);
}
private static CharSequence escapeCsvOld(CharSequence value, boolean trimWhiteSpace) {
int length = checkNotNull(value, "value").length();
if (length == 0) {
return value;
}
int start = 0;
int last = length - 1;
boolean trimmed = false;
if (trimWhiteSpace) {
start = indexOfFirstNonOwsChar(value, length);
if (start == length) {
return EMPTY_STRING;
}
last = indexOfLastNonOwsChar(value, start, length);
trimmed = start > 0 || last < length - 1;
if (trimmed) {
length = last - start + 1;
}
}
StringBuilder result = new StringBuilder(length + 7);
boolean quoted = isDoubleQuote(value.charAt(start)) && isDoubleQuote(value.charAt(last)) && length != 1;
boolean foundSpecialCharacter = false;
boolean escapedDoubleQuote = false;
for (int i = start; i <= last; i++) {
char current = value.charAt(i);
switch (current) {
case DOUBLE_QUOTE:
if (i == start || i == last) {
if (!quoted) {
result.append(DOUBLE_QUOTE);
} else {
continue;
}
} else {
boolean isNextCharDoubleQuote = isDoubleQuote(value.charAt(i + 1));
if (!isDoubleQuote(value.charAt(i - 1)) &&
(!isNextCharDoubleQuote || i + 1 == last)) {
result.append(DOUBLE_QUOTE);
escapedDoubleQuote = true;
}
break;
}
case LINE_FEED:
case CARRIAGE_RETURN:
case COMMA:
foundSpecialCharacter = true;
}
result.append(current);
}
Source
Frequently Asked Questions
What is the EscapeCsvBenchmark class?
EscapeCsvBenchmark is a class in the netty codebase, defined in microbench/src/main/java/io/netty/microbench/internal/EscapeCsvBenchmark.java.
Where is EscapeCsvBenchmark defined?
EscapeCsvBenchmark is defined in microbench/src/main/java/io/netty/microbench/internal/EscapeCsvBenchmark.java at line 32.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free