diff --git a/dd-trace-core/src/jmh/java/datadog/trace/core/tagprocessor/QueryObfuscatorBenchmark.java b/dd-trace-core/src/jmh/java/datadog/trace/core/tagprocessor/QueryObfuscatorBenchmark.java new file mode 100644 index 00000000000..257b27f2d6a --- /dev/null +++ b/dd-trace-core/src/jmh/java/datadog/trace/core/tagprocessor/QueryObfuscatorBenchmark.java @@ -0,0 +1,45 @@ +package datadog.trace.core.tagprocessor; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Threads; +import org.openjdk.jmh.annotations.Warmup; + +import datadog.query.QueryObfuscator; + +@Fork(2) +@Warmup(iterations=2) +@Measurement(iterations=3) +@Threads(8) +public class QueryObfuscatorBenchmark { + static final QueryObfuscator obfuscator = new QueryObfuscator(null); + + static final String NO_REDACT = "foo=bar"; + static final String SIMPLE_REDACT = "app_key=1111"; + static final String LARGE_REDACT = repeat("app_key=1111&application_key=2222&token=0894-4832", '&', 4096); + + static final String repeat(String repeat, char separator, int length) { + StringBuilder builder = new StringBuilder(length); + builder.append(repeat); + while ( builder.length() + repeat.length() + 1 < length ) { + builder.append(separator).append(repeat); + } + return builder.toString(); + } + + @Benchmark + public String noRedact() { + return obfuscator.obfuscate(NO_REDACT); + } + + @Benchmark + public String simpleRedact() { + return obfuscator.obfuscate(SIMPLE_REDACT); + } + + @Benchmark + public String largeRedact() { + return obfuscator.obfuscate(LARGE_REDACT); + } +} diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/QueryObfuscator.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/QueryObfuscator.java index 37bbd470596..36228f7a590 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/QueryObfuscator.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/QueryObfuscator.java @@ -49,10 +49,8 @@ public QueryObfuscator(String regex) { private String obfuscate(String query) { if (pattern != null) { - Matcher matcher = pattern.matcher(query); - while (matcher.find()) { - query = Strings.replace(query, matcher.group(), ""); - } + java.util.regex.Matcher matcher = pattern.matcher(query); + return matcher.replaceAll(""); } return query; }