On Fri, 6 Dec 2024 16:30:47 GMT, Quan Anh Mai <qa...@openjdk.org> 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

Reply via email to