[foreign-memaccess+abi] RFR: Improve strlen performance [v4]

Maurizio Cimadamore mcimadamore at openjdk.org
Tue Aug 15 12:19:23 UTC 2023


On Tue, 15 Aug 2023 10:21:41 GMT, Per Minborg <pminborg at openjdk.org> wrote:

>> This PR suggests removing the use of native calls for strlen and instead use Java implementations.
>> 
>> The PR also suggest performance improvements for quad word strlen.
>> 
>> Here are some benchmarks that compares the performance of the new proposed methods with the performance of the JDK 21 variants (called "legacy" methods):
>> 
>> <img width="2596" alt="image" src="https://github.com/openjdk/panama-foreign/assets/7457876/c785f341-c826-4e3e-bf56-8387b1e96010">
>
> Per Minborg has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains ten commits:
> 
>  - Merge foreign-memaccess+abi and fix formatting
>  - Fix missing spaces
>  - Undo some unintended changes and clean up
>  - Merge foreign-memaccess+abi
>  - Clean up
>  - Optimize str_len variants
>  - Optimize strlen_short
>  - Fix allocation size
>  - Fix test with strcat

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.

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

PR Review Comment: https://git.openjdk.org/panama-foreign/pull/862#discussion_r1294519723


More information about the panama-dev mailing list