On Tue, 28 Feb 2023 23:08:29 GMT, Eirik Bjorsnos <[email protected]> wrote:
>> This PR suggests we add a vectorized equalsIgnoreCase benchmark to the set
>> of benchmarks in `org.openjdk.bench.jdk.incubator.vector`. This benchmark
>> serves as an example of how vectorization can be useful also in the area of
>> text processing. It takes advantage of the fact that ASCII and Latin-1 were
>> designed to optimize case-twiddling operations.
>>
>> The code came about during the work on #12632, where vectorization was
>> deemed out of scope.
>>
>> Benchmark results:
>>
>>
>> Benchmark (size) Mode Cnt Score Error
>> Units
>> EqualsIgnoreCaseBenchmark.scalar 16 avgt 15 20.671 ± 0.718
>> ns/op
>> EqualsIgnoreCaseBenchmark.scalar 32 avgt 15 46.155 ± 3.258
>> ns/op
>> EqualsIgnoreCaseBenchmark.scalar 64 avgt 15 68.248 ± 1.767
>> ns/op
>> EqualsIgnoreCaseBenchmark.scalar 128 avgt 15 148.948 ± 0.890
>> ns/op
>> EqualsIgnoreCaseBenchmark.scalar 1024 avgt 15 1090.708 ± 7.540
>> ns/op
>> EqualsIgnoreCaseBenchmark.vectorized 16 avgt 15 21.872 ± 0.232
>> ns/op
>> EqualsIgnoreCaseBenchmark.vectorized 32 avgt 15 11.378 ± 0.097
>> ns/op
>> EqualsIgnoreCaseBenchmark.vectorized 64 avgt 15 13.703 ± 0.135
>> ns/op
>> EqualsIgnoreCaseBenchmark.vectorized 128 avgt 15 21.632 ± 0.735
>> ns/op
>> EqualsIgnoreCaseBenchmark.vectorized 1024 avgt 15 105.509 ± 7.493
>> ns/op
>
> Eirik Bjorsnos has updated the pull request incrementally with two additional
> commits since the last revision:
>
> - Uppercase Thorn is 0xDE
> - Update 'a' to 'A' and 'z' to 'Z' in comments
test/micro/org/openjdk/bench/jdk/incubator/vector/EqualsIgnoreCaseBenchmark.java
line 67:
> 65: public void scalar(Blackhole blackhole) {
> 66: blackhole.consume(scalarEqualsIgnoreCase(a, b, len));
> 67: }
If you like there is no need to explicitly use a black hole, instead declare
the benchmark method to return `boolean` and return the result of the call. JMH
will do the right thing. I find that a little more concise and easier to read.
-------------
PR: https://git.openjdk.org/jdk/pull/12790