String.equalsIgnoreCase(...) optimization

Andrey andrey at tweak.su
Wed Apr 27 09:57:11 UTC 2016


I publish my JMH benchmark at github https://github.com/volodin-aa/openjdk-benchmark

27.04.2016, 01:23, "Andrey" <andrey at tweak.su>:
> I create simple benchmark (attached). Optimized version more faster:
>
> # JMH 1.12 (released 26 days ago)
> # VM version: JDK 1.8.0_91, VM 25.91-b14
> ..
> # Run complete. Total time: 00:04:02
>
> Benchmark Mode Cnt Score Error Units
> StringBenchmark.constConst thrpt 20 37935470,179 ▒ 158354,736 ops/s
> StringBenchmark.constConstFast thrpt 20 70342038,623 ▒ 727831,951 ops/s
> StringBenchmark.newNew thrpt 20 30033885,754 ▒ 374524,932 ops/s
> StringBenchmark.newNewFast thrpt 20 69567918,934 ▒ 196494,474 ops/s
> StringBenchmark.varVar thrpt 20 36102111,956 ▒ 364861,774 ops/s
> StringBenchmark.varVarFast thrpt 20 66743826,698 ▒ 124162,725 ops/s
>
> How I can publish my version equalsIgnoreCase(...) or OpenJDK team check results separately?
>
> 26.04.2016, 18:18, "Andrew Haley" <aph at redhat.com>:
>>   On 04/26/2016 03:25 PM, Andrey wrote:
>>>    May be can create optimized regionMatches(...) for use in equalsIgnoreCase(...)?
>>
>>   When the HotSpot JVM's just-in-time compiler optimizes this code it
>>   inlines all of these tests, realizes that they are constant values,
>>   and generates no code for them. All the generated code does is check
>>   that the strings have the same coder and are the same length, then it
>>   goes into an unrolled loop checking that the characters are the same



More information about the core-libs-dev mailing list