changeset 654:755c05380872

Optimise waitForPrompt() by delaying the creation of a new StringBuilder object till it is really needed.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 08 Sep 2022 15:50:59 +0200 (2022-09-08)
parents 5eb9d54057e6
children 2ded26c5a679
files src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
+++ b/src/main/java/org/monetdb/mcl/io/BufferedMCLReader.java
@@ -131,16 +131,21 @@ public final class BufferedMCLReader ext
 	 * TODO(Wouter): should probably not have to be synchronized.
 	 */
 	final public synchronized String waitForPrompt() throws IOException {
-		final StringBuilder ret = new StringBuilder(128);
+		StringBuilder errmsgs = null;
 		String tmp;
 
 		while (lineType != LineType.PROMPT) {
 			tmp = readLine();
 			if (tmp == null)
 				throw new IOException("Connection to server lost!");
-			if (lineType == LineType.ERROR)
-				ret.append('\n').append(tmp.substring(1));
+			if (lineType == LineType.ERROR) {
+				if (errmsgs == null)
+					errmsgs = new StringBuilder(128);
+				errmsgs.append('\n').append(tmp.substring(1).trim());
+			}
 		}
-		return ret.length() == 0 ? null : ret.toString().trim();
+		if (errmsgs == null)
+			return null;
+		return errmsgs.toString();
 	}
 }