Hi Jim, Perhaps premature optimization...
Have you done any JMH tests on the expected string content and sizes. The optimization for single 8-bit characters is good but for short strings like inserting spaces for tab stops, " ".repeat(5), will suffer the overhead of Arraycopy for very small/short or non-8-bit strings. Perhaps use a regular loop below some threshold ( limit < 32). Maybe the intrinsic already handles this efficiently or it is not important enough to optimize.
I would not expect to see many very long repeats or long strings being repeated. And I would leave cache-effect optimizations to the implementation of Arraycopy.
Thanks, Roger On 2/28/2018 9:13 PM, Paul Sandoz wrote:
Hi Jim, Looks good. I like the power of 2 copying. 2978 * @throws IllegalArgumentException if the {@code count} is 2979 * negative. 2980 */ 2981 public String repeat(int count) { Missing @since11 on the method. Like Stuart suggests, turn the explanatory text into an api note, perhaps with a small code sample. Thanks, Paul.On Feb 28, 2018, at 8:31 AM, Jim Laskey <[email protected]> wrote: Introduction of a new instance method String::repeat to allow an efficient and concise approach for generating repeated character sequences as strings. Performance information in JBS. Thank you. Cheers, — Jim JBS: https://bugs.openjdk.java.net/browse/JDK-8197594 <https://bugs.openjdk.java.net/browse/JDK-8197594> CSR: https://bugs.openjdk.java.net/browse/JDK-8198296 <http://cr.openjdk.java.net/~jlaskey/8197594/String.html> Webrev: http://cr.openjdk.java.net/~jlaskey/8197594/webrev-02/index.html <http://cr.openjdk.java.net/~jlaskey/8197594/webrev-02/index.html> JavaDoc: http://cr.openjdk.java.net/~jlaskey/8197594/String.html <http://cr.openjdk.java.net/~jlaskey/8197594/String.html>
