Hi, On 03/07/2016 07:29 PM, Chris Hegarty wrote: > What is in the webrev is specialized versions of compare when > the coder of the strings match. Alternatively, this could be pushed > down to String[Latin1|UTF16]. > > Webrev & bug: > http://cr.openjdk.java.net/~chegar/8151384/webrev.00/ > https://bugs.openjdk.java.net/browse/JDK-8151384
Overall, good cleanup idea. I think the actual helpers deserve to be pushed to String[Latin1|UTF16], as String is already overloaded with lots of code. See how e.g. String.regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) does it. Nits: *) Change: compareLatin1ToUTF16(v2, v1) * -1; To: -compareLatin1ToUTF16(v2, v1); *) Do we really need to cast up/down to "char" in compareLatin1*? > Benchmarks and results ( based, somewhat, on Aleksey's [1] ): > http://cr.openjdk.java.net/~chegar/8151384/bench/ Comments on benchmarks (that might have impact on validity): *) "# JMH 1.6 (released 388 days ago, please consider updating!)" *) CaseInsensitiveCompare.cmp1_cmp1 is suspiciously unaffected by size. That's because benchmark goes through the identity comparison: @Benchmark @CompilerControl(CompilerControl.Mode.DONT_INLINE) public int cmp1_cmp1() { return CASE_INSENSITIVE_ORDER.compare(cmp1_1, cmp1_1); } ...should really be: @Benchmark @CompilerControl(CompilerControl.Mode.DONT_INLINE) public int cmp1_cmp1() { return CASE_INSENSITIVE_ORDER.compare(cmp1_1, cmp1_2); } *) Probable dead-code elimination here: @Benchmark @CompilerControl(CompilerControl.Mode.DONT_INLINE) public void StringCaseInsensitiveComparator() { List<String> strings = AVAILABLE_CHARSETS; for (String s1 : strings) { for (String s2 : strings) { String.CASE_INSENSITIVE_ORDER.compare(s1, s2); } } } ...should be: @Benchmark @CompilerControl(CompilerControl.Mode.DONT_INLINE) public void StringCaseInsensitiveComparator(Blackhole bh) { List<String> strings = AVAILABLE_CHARSETS; for (String s1 : strings) { for (String s2 : strings) { bh.consume(String.CASE_INSENSITIVE_ORDER.compare(s1, s2)); } } } Thanks, -Aleksey