On Fri, 6 Dec 2024 16:30:47 GMT, Quan Anh Mai <[email protected]> wrote:
> Hi,
>
> This patch improves the performance of a typical `Arena::allocate` in several
> ways:
>
> - Delay the creation of the NativeMemorySegmentImpl. This avoids the merge of
> the instance with the one obtained from the call in the uncommon path,
> increasing the chance the object being scalar replaced.
> - Split the allocation of over-aligned memory to a slow-path method.
> - Align the memory to 8 bytes, allowing faster zeroing.
> - Use a dedicated method to zero the just-allocated native memory, reduce
> code size and make it more straightforward.
> - Make `VM.pageAlignDirectMemory` a `Boolean` instead of a `boolean` so that
> `false` value can be constant folded.
>
> Please take a look and leave your reviews, thanks a lot.
The benchmark results of the updated version are a bit better than the previous
version:
Benchmark (size) Mode Cnt Score Error Units
AllocTest.alloc_confined 5 avgt 30 15.796 ± 0.066 ns/op
AllocTest.alloc_confined 20 avgt 30 16.402 ± 0.203 ns/op
AllocTest.alloc_confined 100 avgt 30 17.804 ± 0.142 ns/op
AllocTest.alloc_confined 500 avgt 30 20.037 ± 0.176 ns/op
AllocTest.alloc_confined 2000 avgt 30 39.397 ± 3.176 ns/op
AllocTest.alloc_confined 8000 avgt 30 77.413 ± 1.621 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/22610#issuecomment-2536839516