From b45a1cd15b304c33e072ae1633f64da79fa33986 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Wed, 8 May 2019 14:30:34 +0900 Subject: [PATCH] Add equality check to contentEquals instance methods. (#9130) Motivation: An instance is always equal to itself. It makes sense to skip processing for this case, which isn't uncommon since `AsciiString` is often memoized within an application when used as HTTP header names. Modification: `contentEquals` methods first check for instance equality before doing processing. Result: `contentEquals` will be faster when comparing an instance with itself. I couldn't find any unit tests for these methods, only the static version. Let me know if I should add something to `AsciiStringCharacterTest`. Came up here: https://github.com/line/armeria/pull/1731#discussion_r280396280 --- common/src/main/java/io/netty/util/AsciiString.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/src/main/java/io/netty/util/AsciiString.java b/common/src/main/java/io/netty/util/AsciiString.java index 34cec92b00..056c55df07 100644 --- a/common/src/main/java/io/netty/util/AsciiString.java +++ b/common/src/main/java/io/netty/util/AsciiString.java @@ -522,6 +522,10 @@ public final class AsciiString implements CharSequence, Comparable * @return {@code true} if the specified string is equal to this string, {@code false} otherwise. */ public boolean contentEqualsIgnoreCase(CharSequence string) { + if (this == string) { + return true; + } + if (string == null || string.length() != length()) { return false; } @@ -1030,6 +1034,10 @@ public final class AsciiString implements CharSequence, Comparable * @return {@code true} if equal, otherwise {@code false} */ public boolean contentEquals(CharSequence a) { + if (this == a) { + return true; + } + if (a == null || a.length() != length()) { return false; }