You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexey Varlamov (JIRA)" <ji...@apache.org> on 2006/06/10 09:05:29 UTC
[jira] Created: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
[classlib][luni] java.lang.StringBuilder performs very slowly
-------------------------------------------------------------
Key: HARMONY-589
URL: http://issues.apache.org/jira/browse/HARMONY-589
Project: Harmony
Type: Improvement
Components: Classlib
Reporter: Alexey Varlamov
Priority: Minor
The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
The following simple test demonstrates this:
public class SPTest {
public static void main(String[] s) {
test1();
test2();
}
static void test1() {
long t1 = System.currentTimeMillis();
StringBuilder sb1 = new StringBuilder(100000);
for(int i=0; i<10000; i++){
sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
}
long t2 = System.currentTimeMillis();
StringBuffer sb2 = new StringBuffer(100000);
for(int i=0; i<10000; i++){
sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
}
long t3 = System.currentTimeMillis();
System.out.println("append(String) test, ms");
System.out.println("\tStringBuilder : " + (t2-t1));
System.out.println("\tStringBuffer : " + (t3-t2));
}
static void test2() {
long t1 = System.currentTimeMillis();
String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
for(int i=0; i<1000; i++){
s1 = new StringBuilder(s1).append("1234567890").toString();
}
long t2 = System.currentTimeMillis();
String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
for(int i=0; i<1000; i++){
s2 = new StringBuffer(s2).append("1234567890").toString();
}
long t3 = System.currentTimeMillis();
System.out.println("constructor(String) test, ms");
System.out.println("\tStringBuilder : " + (t2-t1));
System.out.println("\tStringBuffer : " + (t3-t2));
}
}
Typical output on J9vm, interpreter mode:
---------------------------------
append(String) test, ms
StringBuilder : 221
StringBuffer : 140
constructor(String) test, ms
StringBuilder : 1051
StringBuffer : 291
---------------------------------
J9vm, JIT mode:
---------------------------------
append(String) test, ms
StringBuilder : 80
StringBuffer : 30
constructor(String) test, ms
StringBuilder : 130
StringBuffer : 40
--------------------------------
Jrockit 1.5.0 output:
--------------------------------
append(String) test, ms
StringBuilder : 10
StringBuffer : 20
constructor(String) test, ms
StringBuilder : 30
StringBuffer : 40
Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Commented: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-589?page=comments#action_12416122 ]
Alexey Varlamov commented on HARMONY-589:
-----------------------------------------
It looks OK. Just there was some inconvenience comparing versions, due to shuffled methods.
Also, one more pass is needed to correct javadoc comments (mainly in AbstractStringBuilder) - sometimes it says "this StringBuffer", should be "this StringBuilder", sometimes wrong parameter name is listed, etc.
Anyway this issue may be closed.
> [classlib][luni] java.lang.StringBuilder performs very slowly
> -------------------------------------------------------------
>
> Key: HARMONY-589
> URL: http://issues.apache.org/jira/browse/HARMONY-589
> Project: Harmony
> Type: Improvement
> Components: Classlib
> Reporter: Alexey Varlamov
> Assignee: Nathan Beyer
> Priority: Minor
> Attachments: AbstractStringBuilder.java, SB.diff
>
> The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
> However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
> The following simple test demonstrates this:
> public class SPTest {
> public static void main(String[] s) {
> test1();
> test2();
> }
>
> static void test1() {
> long t1 = System.currentTimeMillis();
> StringBuilder sb1 = new StringBuilder(100000);
> for(int i=0; i<10000; i++){
> sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t2 = System.currentTimeMillis();
>
> StringBuffer sb2 = new StringBuffer(100000);
> for(int i=0; i<10000; i++){
> sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t3 = System.currentTimeMillis();
>
> System.out.println("append(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
>
> static void test2() {
> long t1 = System.currentTimeMillis();
> String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s1 = new StringBuilder(s1).append("1234567890").toString();
> }
> long t2 = System.currentTimeMillis();
> String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s2 = new StringBuffer(s2).append("1234567890").toString();
> }
> long t3 = System.currentTimeMillis();
> System.out.println("constructor(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
> }
> Typical output on J9vm, interpreter mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 221
> StringBuffer : 140
> constructor(String) test, ms
> StringBuilder : 1051
> StringBuffer : 291
> ---------------------------------
> J9vm, JIT mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 80
> StringBuffer : 30
> constructor(String) test, ms
> StringBuilder : 130
> StringBuffer : 40
> --------------------------------
> Jrockit 1.5.0 output:
> --------------------------------
> append(String) test, ms
> StringBuilder : 10
> StringBuffer : 20
> constructor(String) test, ms
> StringBuilder : 30
> StringBuffer : 40
> Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Resolved: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
Posted by "Nathan Beyer (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-589?page=all ]
Nathan Beyer resolved HARMONY-589:
----------------------------------
Resolution: Fixed
I've applied the patch with some trivial cleanup at revision 414026. Please check it out to make sure that it's applied as expected.
> [classlib][luni] java.lang.StringBuilder performs very slowly
> -------------------------------------------------------------
>
> Key: HARMONY-589
> URL: http://issues.apache.org/jira/browse/HARMONY-589
> Project: Harmony
> Type: Improvement
> Components: Classlib
> Reporter: Alexey Varlamov
> Assignee: Nathan Beyer
> Priority: Minor
> Attachments: AbstractStringBuilder.java, SB.diff
>
> The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
> However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
> The following simple test demonstrates this:
> public class SPTest {
> public static void main(String[] s) {
> test1();
> test2();
> }
>
> static void test1() {
> long t1 = System.currentTimeMillis();
> StringBuilder sb1 = new StringBuilder(100000);
> for(int i=0; i<10000; i++){
> sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t2 = System.currentTimeMillis();
>
> StringBuffer sb2 = new StringBuffer(100000);
> for(int i=0; i<10000; i++){
> sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t3 = System.currentTimeMillis();
>
> System.out.println("append(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
>
> static void test2() {
> long t1 = System.currentTimeMillis();
> String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s1 = new StringBuilder(s1).append("1234567890").toString();
> }
> long t2 = System.currentTimeMillis();
> String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s2 = new StringBuffer(s2).append("1234567890").toString();
> }
> long t3 = System.currentTimeMillis();
> System.out.println("constructor(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
> }
> Typical output on J9vm, interpreter mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 221
> StringBuffer : 140
> constructor(String) test, ms
> StringBuilder : 1051
> StringBuffer : 291
> ---------------------------------
> J9vm, JIT mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 80
> StringBuffer : 30
> constructor(String) test, ms
> StringBuilder : 130
> StringBuffer : 40
> --------------------------------
> Jrockit 1.5.0 output:
> --------------------------------
> append(String) test, ms
> StringBuilder : 10
> StringBuffer : 20
> constructor(String) test, ms
> StringBuilder : 30
> StringBuffer : 40
> Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Commented: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-589?page=comments#action_12416001 ]
Alexey Varlamov commented on HARMONY-589:
-----------------------------------------
Sorry, the previous comment should read as:
Attached are 2 files:
1) j.lAbstractStringBuilder is package-private class providing shared functionality for j.l.StringBuilder & j.l.StringBuffer.
2) SB.diff contains changes needed to move j.l.StringBuilder & j.l.StringBuffer to this common base class.
Now performance results are:
----------------------------------
JIT mode:
append(String) test, ms
StringBuffer : 30
StringBuilder : 10
constructor(String) test, ms
StringBuilder : 20
StringBuffer : 20
----------------------------------
interpreter mode:
append(String) test, ms
StringBuffer : 150
StringBuilder : 131
constructor(String) test, ms
StringBuilder : 250
StringBuffer : 250
The suggested fix also eliminates code duplication between j.l.StringBuilder & j.l.StringBuffer, and absolutely syncs their behavoir up to the finest details.
> [classlib][luni] java.lang.StringBuilder performs very slowly
> -------------------------------------------------------------
>
> Key: HARMONY-589
> URL: http://issues.apache.org/jira/browse/HARMONY-589
> Project: Harmony
> Type: Improvement
> Components: Classlib
> Reporter: Alexey Varlamov
> Priority: Minor
> Attachments: AbstractStringBuilder.java, SB.diff
>
> The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
> However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
> The following simple test demonstrates this:
> public class SPTest {
> public static void main(String[] s) {
> test1();
> test2();
> }
>
> static void test1() {
> long t1 = System.currentTimeMillis();
> StringBuilder sb1 = new StringBuilder(100000);
> for(int i=0; i<10000; i++){
> sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t2 = System.currentTimeMillis();
>
> StringBuffer sb2 = new StringBuffer(100000);
> for(int i=0; i<10000; i++){
> sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t3 = System.currentTimeMillis();
>
> System.out.println("append(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
>
> static void test2() {
> long t1 = System.currentTimeMillis();
> String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s1 = new StringBuilder(s1).append("1234567890").toString();
> }
> long t2 = System.currentTimeMillis();
> String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s2 = new StringBuffer(s2).append("1234567890").toString();
> }
> long t3 = System.currentTimeMillis();
> System.out.println("constructor(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
> }
> Typical output on J9vm, interpreter mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 221
> StringBuffer : 140
> constructor(String) test, ms
> StringBuilder : 1051
> StringBuffer : 291
> ---------------------------------
> J9vm, JIT mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 80
> StringBuffer : 30
> constructor(String) test, ms
> StringBuilder : 130
> StringBuffer : 40
> --------------------------------
> Jrockit 1.5.0 output:
> --------------------------------
> append(String) test, ms
> StringBuilder : 10
> StringBuffer : 20
> constructor(String) test, ms
> StringBuilder : 30
> StringBuffer : 40
> Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Closed: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
Posted by "Nathan Beyer (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-589?page=all ]
Nathan Beyer closed HARMONY-589:
--------------------------------
Verified. Feel free to log additional issues for updating the javadoc.
> [classlib][luni] java.lang.StringBuilder performs very slowly
> -------------------------------------------------------------
>
> Key: HARMONY-589
> URL: http://issues.apache.org/jira/browse/HARMONY-589
> Project: Harmony
> Type: Improvement
> Components: Classlib
> Reporter: Alexey Varlamov
> Assignee: Nathan Beyer
> Priority: Minor
> Attachments: AbstractStringBuilder.java, SB.diff
>
> The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
> However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
> The following simple test demonstrates this:
> public class SPTest {
> public static void main(String[] s) {
> test1();
> test2();
> }
>
> static void test1() {
> long t1 = System.currentTimeMillis();
> StringBuilder sb1 = new StringBuilder(100000);
> for(int i=0; i<10000; i++){
> sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t2 = System.currentTimeMillis();
>
> StringBuffer sb2 = new StringBuffer(100000);
> for(int i=0; i<10000; i++){
> sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t3 = System.currentTimeMillis();
>
> System.out.println("append(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
>
> static void test2() {
> long t1 = System.currentTimeMillis();
> String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s1 = new StringBuilder(s1).append("1234567890").toString();
> }
> long t2 = System.currentTimeMillis();
> String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s2 = new StringBuffer(s2).append("1234567890").toString();
> }
> long t3 = System.currentTimeMillis();
> System.out.println("constructor(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
> }
> Typical output on J9vm, interpreter mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 221
> StringBuffer : 140
> constructor(String) test, ms
> StringBuilder : 1051
> StringBuffer : 291
> ---------------------------------
> J9vm, JIT mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 80
> StringBuffer : 30
> constructor(String) test, ms
> StringBuilder : 130
> StringBuffer : 40
> --------------------------------
> Jrockit 1.5.0 output:
> --------------------------------
> append(String) test, ms
> StringBuilder : 10
> StringBuffer : 20
> constructor(String) test, ms
> StringBuilder : 30
> StringBuffer : 40
> Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Assigned: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
Posted by "Nathan Beyer (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-589?page=all ]
Nathan Beyer reassigned HARMONY-589:
------------------------------------
Assign To: Nathan Beyer
> [classlib][luni] java.lang.StringBuilder performs very slowly
> -------------------------------------------------------------
>
> Key: HARMONY-589
> URL: http://issues.apache.org/jira/browse/HARMONY-589
> Project: Harmony
> Type: Improvement
> Components: Classlib
> Reporter: Alexey Varlamov
> Assignee: Nathan Beyer
> Priority: Minor
> Attachments: AbstractStringBuilder.java, SB.diff
>
> The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
> However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
> The following simple test demonstrates this:
> public class SPTest {
> public static void main(String[] s) {
> test1();
> test2();
> }
>
> static void test1() {
> long t1 = System.currentTimeMillis();
> StringBuilder sb1 = new StringBuilder(100000);
> for(int i=0; i<10000; i++){
> sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t2 = System.currentTimeMillis();
>
> StringBuffer sb2 = new StringBuffer(100000);
> for(int i=0; i<10000; i++){
> sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t3 = System.currentTimeMillis();
>
> System.out.println("append(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
>
> static void test2() {
> long t1 = System.currentTimeMillis();
> String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s1 = new StringBuilder(s1).append("1234567890").toString();
> }
> long t2 = System.currentTimeMillis();
> String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s2 = new StringBuffer(s2).append("1234567890").toString();
> }
> long t3 = System.currentTimeMillis();
> System.out.println("constructor(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
> }
> Typical output on J9vm, interpreter mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 221
> StringBuffer : 140
> constructor(String) test, ms
> StringBuilder : 1051
> StringBuffer : 291
> ---------------------------------
> J9vm, JIT mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 80
> StringBuffer : 30
> constructor(String) test, ms
> StringBuilder : 130
> StringBuffer : 40
> --------------------------------
> Jrockit 1.5.0 output:
> --------------------------------
> append(String) test, ms
> StringBuilder : 10
> StringBuffer : 20
> constructor(String) test, ms
> StringBuilder : 30
> StringBuffer : 40
> Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Updated: (HARMONY-589) [classlib][luni]
java.lang.StringBuilder performs very slowly
Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-589?page=all ]
Alexey Varlamov updated HARMONY-589:
------------------------------------
Attachment: AbstractStringBuilder.java
SB.diff
1) j.lAbstractStringBuilder is package-private class providing shared functionality for j.l.StringBuilder & j.l.StringBuffer.
2)
> [classlib][luni] java.lang.StringBuilder performs very slowly
> -------------------------------------------------------------
>
> Key: HARMONY-589
> URL: http://issues.apache.org/jira/browse/HARMONY-589
> Project: Harmony
> Type: Improvement
> Components: Classlib
> Reporter: Alexey Varlamov
> Priority: Minor
> Attachments: AbstractStringBuilder.java, SB.diff
>
> The j.l.StringBuilder was introduced in Java 1.5 mainly as a speedup replacement to heavily synchronized j.l.StringBuffer.
> However, current implementation of StringBuilder performs 2-4 times slower than StringBuffer.
> The following simple test demonstrates this:
> public class SPTest {
> public static void main(String[] s) {
> test1();
> test2();
> }
>
> static void test1() {
> long t1 = System.currentTimeMillis();
> StringBuilder sb1 = new StringBuilder(100000);
> for(int i=0; i<10000; i++){
> sb1.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t2 = System.currentTimeMillis();
>
> StringBuffer sb2 = new StringBuffer(100000);
> for(int i=0; i<10000; i++){
> sb2.append("0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
> }
> long t3 = System.currentTimeMillis();
>
> System.out.println("append(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
>
> static void test2() {
> long t1 = System.currentTimeMillis();
> String s1 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s1 = new StringBuilder(s1).append("1234567890").toString();
> }
> long t2 = System.currentTimeMillis();
> String s2 = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
> for(int i=0; i<1000; i++){
> s2 = new StringBuffer(s2).append("1234567890").toString();
> }
> long t3 = System.currentTimeMillis();
> System.out.println("constructor(String) test, ms");
> System.out.println("\tStringBuilder : " + (t2-t1));
> System.out.println("\tStringBuffer : " + (t3-t2));
> }
> }
> Typical output on J9vm, interpreter mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 221
> StringBuffer : 140
> constructor(String) test, ms
> StringBuilder : 1051
> StringBuffer : 291
> ---------------------------------
> J9vm, JIT mode:
> ---------------------------------
> append(String) test, ms
> StringBuilder : 80
> StringBuffer : 30
> constructor(String) test, ms
> StringBuilder : 130
> StringBuffer : 40
> --------------------------------
> Jrockit 1.5.0 output:
> --------------------------------
> append(String) test, ms
> StringBuilder : 10
> StringBuffer : 20
> constructor(String) test, ms
> StringBuilder : 30
> StringBuffer : 40
> Patch to fix this will follow.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira