RFR: 8303401: Add a Vector API equalsIgnoreCase micro benchmark [v3]
Xiaohong Gong
xgong at openjdk.org
Wed Mar 1 02:36:07 UTC 2023
On Tue, 28 Feb 2023 23:08:29 GMT, Eirik Bjorsnos <duke at openjdk.org> 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 61:
> 59: len = a.length;
> 60: }
> 61: @Benchmark
Style: Insert one blank line between line 60-61?
test/micro/org/openjdk/bench/jdk/incubator/vector/EqualsIgnoreCaseBenchmark.java line 124:
> 122: }
> 123:
> 124: public boolean scalarEqualsIgnoreCase(byte[] a, byte[] b, int len) {
Style: remove one more space between "`public boolean`" please?
test/micro/org/openjdk/bench/jdk/incubator/vector/EqualsIgnoreCaseBenchmark.java line 147:
> 145: return false; // Low ASCII
> 146: }
> 147: return ( U <= 'Z' // In range A-Z
Style: remove one more space between `( U` please?
-------------
PR: https://git.openjdk.org/jdk/pull/12790
More information about the core-libs-dev
mailing list