Use StringBuilder to construct a String instead of relying on appending where possible (#24753)

This PR revolves around places in the code where introducing a StringBuilder might make the construction
of a String easier to follow and also, maybe avoid a case where the compiler's very safe way of introducing 
StringBuilder instead of String might not always be optimal for performance.
This commit is contained in:
Koen De Groote 2017-05-18 12:02:29 +02:00 committed by Christoph Büscher
parent 831c497638
commit 905eb422f6
5 changed files with 40 additions and 29 deletions

View File

@ -139,11 +139,12 @@ final class RequestLogger {
* Creates curl output for given response * Creates curl output for given response
*/ */
static String buildTraceResponse(HttpResponse httpResponse) throws IOException { static String buildTraceResponse(HttpResponse httpResponse) throws IOException {
String responseLine = "# " + httpResponse.getStatusLine().toString(); StringBuilder responseLine = new StringBuilder();
responseLine.append("# ").append(httpResponse.getStatusLine());
for (Header header : httpResponse.getAllHeaders()) { for (Header header : httpResponse.getAllHeaders()) {
responseLine += "\n# " + header.getName() + ": " + header.getValue(); responseLine.append("\n# ").append(header.getName()).append(": ").append(header.getValue());
} }
responseLine += "\n#"; responseLine.append("\n#");
HttpEntity entity = httpResponse.getEntity(); HttpEntity entity = httpResponse.getEntity();
if (entity != null) { if (entity != null) {
if (entity.isRepeatable() == false) { if (entity.isRepeatable() == false) {
@ -158,11 +159,11 @@ final class RequestLogger {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), charset))) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), charset))) {
String line; String line;
while( (line = reader.readLine()) != null) { while( (line = reader.readLine()) != null) {
responseLine += "\n# " + line; responseLine.append("\n# ").append(line);
} }
} }
} }
return responseLine; return responseLine.toString();
} }
private static String getUri(RequestLine requestLine) { private static String getUri(RequestLine requestLine) {

View File

@ -299,19 +299,19 @@ public class JvmInfo implements Writeable, ToXContent {
public int versionAsInteger() { public int versionAsInteger() {
try { try {
int i = 0; int i = 0;
String sVersion = ""; StringBuilder sVersion = new StringBuilder();
for (; i < version.length(); i++) { for (; i < version.length(); i++) {
if (!Character.isDigit(version.charAt(i)) && version.charAt(i) != '.') { if (!Character.isDigit(version.charAt(i)) && version.charAt(i) != '.') {
break; break;
} }
if (version.charAt(i) != '.') { if (version.charAt(i) != '.') {
sVersion += version.charAt(i); sVersion.append(version.charAt(i));
} }
} }
if (i == 0) { if (i == 0) {
return -1; return -1;
} }
return Integer.parseInt(sVersion); return Integer.parseInt(sVersion.toString());
} catch (Exception e) { } catch (Exception e) {
return -1; return -1;
} }
@ -320,19 +320,19 @@ public class JvmInfo implements Writeable, ToXContent {
public int versionUpdatePack() { public int versionUpdatePack() {
try { try {
int i = 0; int i = 0;
String sVersion = ""; StringBuilder sVersion = new StringBuilder();
for (; i < version.length(); i++) { for (; i < version.length(); i++) {
if (!Character.isDigit(version.charAt(i)) && version.charAt(i) != '.') { if (!Character.isDigit(version.charAt(i)) && version.charAt(i) != '.') {
break; break;
} }
if (version.charAt(i) != '.') { if (version.charAt(i) != '.') {
sVersion += version.charAt(i); sVersion.append(version.charAt(i));
} }
} }
if (i == 0) { if (i == 0) {
return -1; return -1;
} }
Integer.parseInt(sVersion); Integer.parseInt(sVersion.toString());
int from; int from;
if (version.charAt(i) == '_') { if (version.charAt(i) == '_') {
// 1.7.0_4 // 1.7.0_4

View File

@ -85,12 +85,12 @@ public abstract class BaseRestHandler extends AbstractComponent implements RestH
final Set<String> invalids, final Set<String> invalids,
final Set<String> candidates, final Set<String> candidates,
final String detail) { final String detail) {
String message = String.format( StringBuilder message = new StringBuilder(String.format(
Locale.ROOT, Locale.ROOT,
"request [%s] contains unrecognized %s%s: ", "request [%s] contains unrecognized %s%s: ",
request.path(), request.path(),
detail, detail,
invalids.size() > 1 ? "s" : ""); invalids.size() > 1 ? "s" : ""));
boolean first = true; boolean first = true;
for (final String invalid : invalids) { for (final String invalid : invalids) {
final LevensteinDistance ld = new LevensteinDistance(); final LevensteinDistance ld = new LevensteinDistance();
@ -108,17 +108,23 @@ public abstract class BaseRestHandler extends AbstractComponent implements RestH
else return a.v2().compareTo(b.v2()); else return a.v2().compareTo(b.v2());
}); });
if (first == false) { if (first == false) {
message += ", "; message.append(", ");
} }
message += "[" + invalid + "]"; message.append("[").append(invalid).append("]");
final List<String> keys = scoredParams.stream().map(Tuple::v2).collect(Collectors.toList()); final List<String> keys = scoredParams.stream().map(Tuple::v2).collect(Collectors.toList());
if (keys.isEmpty() == false) { if (keys.isEmpty() == false) {
message += " -> did you mean " + (keys.size() == 1 ? "[" + keys.get(0) + "]" : "any of " + keys.toString()) + "?"; message.append(" -> did you mean ");
if (keys.size() == 1) {
message.append("[").append(keys.get(0)).append("]");
} else {
message.append("any of ").append(keys.toString());
}
message.append("?");
} }
first = false; first = false;
} }
return message; return message.toString();
} }
/** /**

View File

@ -42,14 +42,14 @@ public final class RandomDocumentPicks {
*/ */
public static String randomFieldName(Random random) { public static String randomFieldName(Random random) {
int numLevels = RandomNumbers.randomIntBetween(random, 1, 5); int numLevels = RandomNumbers.randomIntBetween(random, 1, 5);
String fieldName = ""; StringBuilder fieldName = new StringBuilder();
for (int i = 0; i < numLevels; i++) { for (int i = 0; i < numLevels; i++) {
if (i > 0) { if (i > 0) {
fieldName += "."; fieldName.append('.');
} }
fieldName += randomString(random); fieldName.append(randomString(random));
} }
return fieldName; return fieldName.toString();
} }
/** /**

View File

@ -196,21 +196,25 @@ public class ElasticsearchAssertions {
} }
public static String formatShardStatus(BroadcastResponse response) { public static String formatShardStatus(BroadcastResponse response) {
String msg = " Total shards: " + response.getTotalShards() + " Successful shards: " + response.getSuccessfulShards() + " & " StringBuilder msg = new StringBuilder();
+ response.getFailedShards() + " shard failures:"; msg.append(" Total shards: ").append(response.getTotalShards())
.append(" Successful shards: ").append(response.getSuccessfulShards())
.append(" & ").append(response.getFailedShards()).append(" shard failures:");
for (ShardOperationFailedException failure : response.getShardFailures()) { for (ShardOperationFailedException failure : response.getShardFailures()) {
msg += "\n " + failure.toString(); msg.append("\n ").append(failure);
} }
return msg; return msg.toString();
} }
public static String formatShardStatus(SearchResponse response) { public static String formatShardStatus(SearchResponse response) {
String msg = " Total shards: " + response.getTotalShards() + " Successful shards: " + response.getSuccessfulShards() + " & " StringBuilder msg = new StringBuilder();
+ response.getFailedShards() + " shard failures:"; msg.append(" Total shards: ").append(response.getTotalShards())
.append(" Successful shards: ").append(response.getSuccessfulShards())
.append(" & ").append(response.getFailedShards()).append(" shard failures:");
for (ShardSearchFailure failure : response.getShardFailures()) { for (ShardSearchFailure failure : response.getShardFailures()) {
msg += "\n " + failure.toString(); msg.append("\n ").append(failure);
} }
return msg; return msg.toString();
} }
public static void assertNoSearchHits(SearchResponse searchResponse) { public static void assertNoSearchHits(SearchResponse searchResponse) {