Kev Jackson wrote:

> It's less to do with speed performance and more to do with memory
> performance.  "a" + "b" + "c" creates "a" + "bc" <- intermediate String, 
> and then "abc"

Many years ago - yes, but not now.


java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

public class AAA {
  public String concat(String a, String b, String c) {
    return a + b + c;
  }
}

javac AAA.java

javap -c AAA

public java.lang.String concat(java.lang.String, java.lang.String, 
java.lang.String);
  Code:
   0:   new     #2; //class java/lang/StringBuilder
   3:   dup
   4:   invokespecial   #3; //Method java/lang/StringBuilder."<init>":()V
   7:   aload_1
   8:   invokevirtual   #4; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   11:  aload_2
   12:  invokevirtual   #4; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   15:  aload_3
   16:  invokevirtual   #4; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   19:  invokevirtual   #5; //Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
   22:  areturn

javac -source 1.4 -target 1.4 AAA.java

javap -c AAA

public java.lang.String concat(java.lang.String, java.lang.String, 
java.lang.String);
  Code:
   0:   new     #2; //class java/lang/StringBuffer
   3:   dup
   4:   invokespecial   #3; //Method java/lang/StringBuffer."<init>":()V
   7:   aload_1
   8:   invokevirtual   #4; //Method 
java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   11:  aload_2
   12:  invokevirtual   #4; //Method 
java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   15:  aload_3
   16:  invokevirtual   #4; //Method 
java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
   19:  invokevirtual   #5; //Method 
java/lang/StringBuffer.toString:()Ljava/lang/String;
   22:  areturn

-- 
Best regards,
 Alexey                            mailto:[EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to