FFM performance tweaks

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Tue Nov 19 17:28:09 UTC 2024


On 19/11/2024 16:52, Brian S O'Neill wrote:
> Using the VarHandle transform, it's 1.6% slower than the baseline 
> (unsafe), and when using an unbounded MemorySegment, it's 4.9% slower 
> than the baseline.

Ok, so I'd say that this tweak didn't help much - results seem more or 
less on par with what you had before. And, also on par with what 
reported here:

https://github.com/openjdk/jdk/pull/21810#issuecomment-2450511880

My intuition is that, in most cases, the liveness check is always 
hoisted away if access occurs in some kind of loop -- and so its cost is 
amortized.

Liveness check becomes more important when considering a single-shot 
access (or very small loops):

https://github.com/openjdk/jdk/pull/21810#issue-2627210220

But that's probably not a fair represention of your code base, which is 
probably why you are not seeing a lot of upshot.

Maurizio



>
> I've changed my testing methodology a bit, to average out the 
> variability. So these numbers cannot be compared against any previous 
> results I reported.
>
> There's a few more experiments I want to try out.
>
>
> On 2024-11-19 08:23 AM, Maurizio Cimadamore wrote:
>> Thanks Brian
>>
>> On 19/11/2024 15:35, Brian S O'Neill wrote:
>>> I've already been running some tests against build 24 to see what 
>>> affect pull 21810 has. Tests using the transformed VarHandle 
>>> technique didn't show much improvement. 
>> I believe that's to be expected.
>>> I just started running tests which access the (effectively) 
>>> unbounded MemorySegment and will report back in about an hour.
>>
>> That would be the more interesting one, yes. That said, I'm kind of 
>> prepared not to see the gains in the synthetic benchmark to translate 
>> in bigger real world gains (but I'd be very happy to be wrong here :) ).
>>
>> Maurizio
>>
>>>
>>> On 2024-11-19 06:42 AM, Maurizio Cimadamore wrote:
>>>> Hi,
>>>> some performance tweaks have landed in the JDK 24 early access 
>>>> build (build 24):
>>>>
>>>> https://urldefense.com/v3/__https://jdk.java.net/24/__;!!ACWV5N9M2RV99hQ!PM1KvkakQk5XJ7ClEecm-f7zp5BUeBS-oZ2mkmzcJ9qMOwzwRlkdbz7hBc3IO-1Nvd4uTQw13xtekdKgJZueUQ$ 
>>>>
>>>> They are:
>>>>
>>>> https://git.openjdk.org/jdk/pull/21764
>>>> https://git.openjdk.org/jdk/pull/21810
>>>>
>>>> The former contains some optimizations for `MemorySegment
>>>>
>>>> ` which should improve scalarization - see [1]. The second contains 
>>>> an improvement to the way we perform the liveness check, which 
>>>> should make such check provably redundant for segments backed by 
>>>> the global arena. This should improve the performance of 
>>>> workarounds using an “everything” segment to access off-heap memory 
>>>> with minimal impact from bound checks [2].
>>>>
>>>> As JDK 24 is moving closer to rampdown phase [3], it would be great 
>>>> to give such changes a try and report back.
>>>>
>>>> Cheers
>>>> Maurizio
>>>>
>>>> [1] - https://mail.openjdk.org/pipermail/panama-dev/2024- 
>>>> October/020702.html
>>>> [2] - https://mail.openjdk.org/pipermail/panama-dev/2024- 
>>>> October/020736.html
>>>> [3] - https://openjdk.org/projects/jdk/24/
>>>>
>>>>>>>>
>>>>>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/panama-dev/attachments/20241119/46d6b409/attachment-0001.htm>


More information about the panama-dev mailing list