[foreign-jextract] RFR: MemorySegmentPool + Allocator [v8]

Radoslaw Smogura github.com+7535718+rsmogura at openjdk.java.net
Thu Apr 22 12:12:37 UTC 2021


On Thu, 22 Apr 2021 11:13:00 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> test/micro/org/openjdk/bench/jdk/incubator/foreign/AllocatorsForLongRun.java line 162:
>> 
>>> 160:     for (int idx = 0; idx <  size; idx += 1024) {
>>> 161: //      MemoryAccess.setByteAtOffset(s, l, (byte)0);
>>> 162:       BYTE.set(s, 0, (byte) 1);
>> 
>> You need to cast the offset (idx?) back to a long when you call BYTE.set, otherwise the var handle invocation is not exact.
>
> That said, IMHO, in the new benchmark, the cost of reading dominates everything else. It's not an issue with the memory access API either - replacing read with Unsafe::putInt it still slow. Honestly, since you are after measuring allocation performances, I'm not sure if `readSegment` even belongs here. The more allocations you have, with bigger sized segments, the more read will dominate anything else, to the point of rendering the benchmark not very useful to measure what you want to measure. In fact, even the `strlen` call was an issue in the previous benchmark - as the size of string grows, the time spent in copying data, and strlen grows as well, which then masks the allocation costs. Here you have a similar situation, I think.

That's a pity JMH does not allow sub measurements

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

PR: https://git.openjdk.java.net/panama-foreign/pull/509


More information about the panama-dev mailing list