RFR: 8339531: Improve performance of MemorySegment::mismatch [v9]

Per Minborg pminborg at openjdk.org
Wed Sep 11 13:23:07 UTC 2024


On Thu, 5 Sep 2024 17:58:11 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Fix errors in a benchmark
>
> src/java.base/share/classes/jdk/internal/foreign/SegmentBulkOperations.java line 211:
> 
>> 209:             final int s = SCOPED_MEMORY_ACCESS.getInt(src.sessionImpl(), src.unsafeGetBase(), src.unsafeGetOffset() + srcFromOffset + offset);
>> 210:             final int d = SCOPED_MEMORY_ACCESS.getInt(dst.sessionImpl(), dst.unsafeGetBase(), dst.unsafeGetOffset() + dstFromOffset + offset);
>> 211:             if (s != d) {
> 
> Can we run `mismatch(s, d)` and then check the returned index (e.g. `!= 0`) instead of doing a full comparison and then another mismatch? Or is that slower?

Assuming the most likely outcome is the values `s` and `d` are the same, I think the current way is faster. We avoid xor and counting bits which we likely do not have any use for.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20848#discussion_r1754510267


More information about the core-libs-dev mailing list