Skip to content

Commit

Permalink
ConfigurationPropertyName performance optimizations
Browse files Browse the repository at this point in the history
Minimize implicit calls to Arrays.copyOf, and remove autoboxing of
chars by using optimal StringBuilder#append overload.

Closes spring-projectsgh-13414
  • Loading branch information
jankovd committed Jul 25, 2018
1 parent 1e7aa7c commit 2556b18
Showing 1 changed file with 21 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -304,24 +304,27 @@ public String toString() {
}

private String toString(CharSequence[] elements) {
StringBuilder result = new StringBuilder();
for (CharSequence element : elements) {
boolean indexed = isIndexed(element);
if (result.length() > 0 && !indexed) {
result.append(".");
}
if (indexed) {
result.append(element);
}
else {
for (int i = 0; i < element.length(); i++) {
char ch = Character.toLowerCase(element.charAt(i));
result.append(ch != '_' ? ch : "");
}
}
}
return result.toString();
}
int assumedAverageElementLength = 8;
// initial capacity computed to avoid frequent throwing away of StringBuilder's
// char arrays during rapid doubling of arrays in order to satisfy capacity demands.
StringBuilder result = new StringBuilder(elements.length * assumedAverageElementLength);
for (CharSequence element : elements) {
if (isIndexed(element)) {
result.append(element);
} else {
if (result.length() > 0) {
result.append('.');
}
for (int i = 0; i < element.length(); i++) {
char ch = element.charAt(i);
if (ch != '_') {
result.append(Character.toLowerCase(ch));
}
}
}
}
return result.toString();
}

@Override
public int hashCode() {
Expand Down

0 comments on commit 2556b18

Please sign in to comment.