RFR: 8268231: Aarch64: Use ldp in intrinsics for String.compareTo

Wang Huang whuang at openjdk.java.net
Mon Jul 12 09:14:26 UTC 2021


On Fri, 9 Jul 2021 09:15:18 GMT, Andrew Haley <aph at openjdk.org> wrote:

> I'm quite tempted to approve this. It looks generally better, simpler, and easier to understand than what we have today. However, the improvement isn't great, and I suspect is mostly because of the reduction in traffic between Base and Vector registers.
> What happens if you rewrite `compare_string_16_bytes_same()` to use `ldp` ?

I refacted `compare_string_16_bytes_same()` as a draft, the performance comparision is listed here,
Benchmark                                      |(diff_pos)|(size) | Mode | Cnt |  Score|  Error | Units
-----------------------------------------------|----------|-------|------|-----|-------|--------|------
StringCompare.compareLLDiffStrings             |         7|   128 | avgt |   5 |  4.252|± 0.001 | us/op
StringCompare.compareLLDiffStrings             |        15|   128 | avgt |   5 |  4.714|± 0.001 | us/op
StringCompare.compareLLDiffStrings             |        31|   128 | avgt |   5 |  6.139|± 0.445 | us/op
StringCompare.compareLLDiffStrings             |        47|   128 | avgt |   5 | 13.861|± 0.001 | us/op
StringCompare.compareLLDiffStrings             |        63|   128 | avgt |   5 |  8.823|± 0.007 | us/op
StringCompare.compareLLDiffStringsWithLdp      |         7|   128 | avgt |   5 |  3.867|± 0.001 | us/op
StringCompare.compareLLDiffStringsWithLdp      |        15|   128 | avgt |   5 |  5.571|± 0.756 | us/op
StringCompare.compareLLDiffStringsWithLdp      |        31|   128 | avgt |   5 |  5.408|± 0.001 | us/op
StringCompare.compareLLDiffStringsWithLdp      |        47|   128 | avgt |   5 |  6.896|± 0.825 | us/op
StringCompare.compareLLDiffStringsWithLdp      |        63|   128 | avgt |   5 |  6.787|± 0.001 | us/op
StringCompare.compareLLDiffStringsWithRefactor |         7|   128 | avgt |   5 |  3.481|± 0.001 | us/op
StringCompare.compareLLDiffStringsWithRefactor |        15|   128 | avgt |   5 | 10.023|± 0.012 | us/op
StringCompare.compareLLDiffStringsWithRefactor |        31|   128 | avgt |   5 |  5.627|± 0.017 | us/op
StringCompare.compareLLDiffStringsWithRefactor |        47|   128 | avgt |   5 | 13.369|± 0.544 | us/op
StringCompare.compareLLDiffStringsWithRefactor |        63|   128 | avgt |   5 |  8.382|± 0.988 | us/op

-------------

PR: https://git.openjdk.java.net/jdk/pull/4722


More information about the core-libs-dev mailing list