RFR: 8303401: Add a Vector API equalsIgnoreCase micro benchmark
Eirik Bjorsnos
duke at openjdk.org
Tue Feb 28 20:28:56 UTC 2023
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
-------------
Commit messages:
- Remove references to 'the oldest ASCII trick in the book'
- Merge branch 'master' into vectorized-equalsignorecase
- Fix "using applying"
- Benchmark for exploring a vectorized latin1 equalsIgnoreCase
Changes: https://git.openjdk.org/jdk/pull/12790/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12790&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8303401
Stats: 152 lines in 1 file changed: 152 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/12790.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12790/head:pull/12790
PR: https://git.openjdk.org/jdk/pull/12790
More information about the core-libs-dev
mailing list