Home / Class/ EscapeCsvBenchmark Class — netty Architecture

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

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