[foreign-memaccess+abi] RFR: Improve strlen performance [v4]
Maurizio Cimadamore
mcimadamore at openjdk.org
Tue Aug 15 13:36:23 UTC 2023
On Tue, 15 Aug 2023 13:15:06 GMT, Per Minborg <pminborg at openjdk.org> wrote:
>> src/java.base/share/classes/jdk/internal/foreign/StringSupport.java line 268:
>>
>>> 266: // Do an initial read using aligned semantics.
>>> 267: // If this succeeds, we know that all other subsequent reads will be aligned
>>> 268: if (segment.get(JAVA_INT, start) == 0) {
>>
>> I would expect a simple loop here? What's the deal with avoiding alignment? If that's to speed up by avoiding alignment checks, it should not be required, as the segment being accessed is always at the same base address and the alignment check should be hoisted.
>
> The proposed solution retains the same semantics as the old method where we would get an alignment error if presented with an unaligned MS (e.g. `alignedSegment.asSlice(1)`) but with improved performance (see the benchmarks at the top).
Ok, I understand you might see improved numbers. What I'm saying is that in principle this trick should not be necessary: the loop is a counted loop, and we know we're incrementing by 8 on each iteration. So the alignment check should be hoist-able as once we check the base address there's nothing more to check.
-------------
PR Review Comment: https://git.openjdk.org/panama-foreign/pull/862#discussion_r1294603515
More information about the panama-dev
mailing list