8011135: (bf) CharBuffer.put(String) is slow because of String.charAt() call for each char

Brian Burkhalter brian.burkhalter at oracle.com
Fri Feb 22 15:34:53 UTC 2019


> On Feb 22, 2019, at 7:18 AM, Brian Burkhalter <brian.burkhalter at oracle.com> wrote:
> 
>>> http://cr.openjdk.java.net/~bpb/8011135/webrev/ <http://cr.openjdk.java.net/~bpb/8011135/webrev/>This version looks good.
>> 
>> Claes might have some comments on the microbenchmark, my only comment that future maintainers might wonder about the +42 and also why the position is reset to 21 (I assume it would be buf.clear(); buf.put(str);
> 
> No good reason really. The 21 and 42 can be removed if we like.

I updated the benchmark as below and re-ran it to verify. I’ll push this version unless I see an objection.

Thanks,

Brian

--- a/test/micro/org/openjdk/bench/java/nio/CharBuffers.java
+++ b/test/micro/org/openjdk/bench/java/nio/CharBuffers.java
@@ -54,13 +54,12 @@
         char[] c = new char[numChars];
         Arrays.fill(c, 'X');
         str = String.valueOf(c);
-        buf = CharBuffer.allocate(numChars + 42);
+        buf = CharBuffer.allocate(numChars);
     }
 
     @Benchmark
     public CharBuffer putString() {
-        buf.rewind();
-        buf.position(21);
+        buf.clear();
         return buf.put(str);
     }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/nio-dev/attachments/20190222/75756970/attachment.html>


More information about the nio-dev mailing list