Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I believe the answer might have already been determined, but I post to share the code.</p> <p>Short answer, if pure concatenation is all you are looking for, is: String.concat(...)</p> <p><strong>Output:</strong></p> <pre><code>ITERATION_LIMIT1: 1 ITERATION_LIMIT2: 10000000 s1: STRING1-1111111111111111111111 s2: STRING2-2222222222222222222222 iteration: 1 null: 1.7 nanos s1.concat(s2): 106.1 nanos s1 + s2: 251.7 nanos new StringBuilder(s1).append(s2).toString(): 246.6 nanos new StringBuffer(s1).append(s2).toString(): 404.7 nanos String.format("%s%s", s1, s2): 3276.0 nanos Tests complete </code></pre> <p><strong>Sample Code:</strong></p> <pre><code>package net.fosdal.scratch; public class StringConcatenationPerformance { private static final int ITERATION_LIMIT1 = 1; private static final int ITERATION_LIMIT2 = 10000000; public static void main(String[] args) { String s1 = "STRING1-1111111111111111111111"; String s2 = "STRING2-2222222222222222222222"; String methodName; long startNanos, durationNanos; int iteration2; System.out.println("ITERATION_LIMIT1: " + ITERATION_LIMIT1); System.out.println("ITERATION_LIMIT2: " + ITERATION_LIMIT2); System.out.println("s1: " + s1); System.out.println("s2: " + s2); int iteration1 = 0; while (iteration1++ &lt; ITERATION_LIMIT1) { System.out.println(); System.out.println("iteration: " + iteration1); // method #0 methodName = "null"; iteration2 = 0; startNanos = System.nanoTime(); while (iteration2++ &lt; ITERATION_LIMIT2) { method0(s1, s2); } durationNanos = System.nanoTime() - startNanos; System.out.println(String.format("%50s: %6.1f nanos", methodName, ((double) durationNanos) / ITERATION_LIMIT2)); // method #1 methodName = "s1.concat(s2)"; iteration2 = 0; startNanos = System.nanoTime(); while (iteration2++ &lt; ITERATION_LIMIT2) { method1(s1, s2); } durationNanos = System.nanoTime() - startNanos; System.out.println(String.format("%50s: %6.1f nanos", methodName, ((double) durationNanos) / ITERATION_LIMIT2)); // method #2 iteration2 = 0; startNanos = System.nanoTime(); methodName = "s1 + s2"; while (iteration2++ &lt; ITERATION_LIMIT2) { method2(s1, s2); } durationNanos = System.nanoTime() - startNanos; System.out.println(String.format("%50s: %6.1f nanos", methodName, ((double) durationNanos) / ITERATION_LIMIT2)); // method #3 iteration2 = 0; startNanos = System.nanoTime(); methodName = "new StringBuilder(s1).append(s2).toString()"; while (iteration2++ &lt; ITERATION_LIMIT2) { method3(s1, s2); } durationNanos = System.nanoTime() - startNanos; System.out.println(String.format("%50s: %6.1f nanos", methodName, ((double) durationNanos) / ITERATION_LIMIT2)); // method #4 iteration2 = 0; startNanos = System.nanoTime(); methodName = "new StringBuffer(s1).append(s2).toString()"; while (iteration2++ &lt; ITERATION_LIMIT2) { method4(s1, s2); } durationNanos = System.nanoTime() - startNanos; System.out.println(String.format("%50s: %6.1f nanos", methodName, ((double) durationNanos) / ITERATION_LIMIT2)); // method #5 iteration2 = 0; startNanos = System.nanoTime(); methodName = "String.format(\"%s%s\", s1, s2)"; while (iteration2++ &lt; ITERATION_LIMIT2) { method5(s1, s2); } durationNanos = System.nanoTime() - startNanos; System.out.println(String.format("%50s: %6.1f nanos", methodName, ((double) durationNanos) / ITERATION_LIMIT2)); } System.out.println(); System.out.println("Tests complete"); } public static String method0(String s1, String s2) { return ""; } public static String method1(String s1, String s2) { return s1.concat(s2); } public static String method2(String s1, String s2) { return s1 + s2; } public static String method3(String s1, String s2) { return new StringBuilder(s1).append(s2).toString(); } public static String method4(String s1, String s2) { return new StringBuffer(s1).append(s2).toString(); } public static String method5(String s1, String s2) { return String.format("%s%s", s1, s2); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload