Hello, I'm looking into AbstractStringBuilder java.lang.AbstractStringBuilder.replace(int start, int end, String str) <http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/c10fd784956c/src/share/classes/java/lang/AbstractStringBuilder.java>
There is a array copy after `ensureCapacityInternal`, it's might unnecessary when `newCount` equals to old count (same length of replacement). I can see no native optimization at my box (win7+jdk1.8.0_20), `System.arraycopy` is slow especially copy length is large. E.g. > StringBuilder sb = new StringBuilder(); > for (int i = 0; i < 50000; i++) { > sb.append("sb"); > } > char[] charArr = sb.toString().toCharArray(); > int len = charArr.length - 3; > for (int i = 0; i < 1000000; i++) { > sb.replace(1, 3, "xy"); // slow > System.arraycopy(charArr, 3, charArr, 3, len); // slow > System.arraycopy(charArr, len, charArr, len, 1); // fast > } Thanks, Luis