[foreign-memaccess] RFR 8219852: Create a set of standard benchmarks

Jorn Vernee jorn.vernee at oracle.com
Fri Jan 10 15:48:01 UTC 2020


Looks good.

Cheers,
Jorn

On 10/01/2020 15:07, Maurizio Cimadamore wrote:
> New revision here
>
> http://cr.openjdk.java.net/~mcimadamore/panama/8219852_part2_v4
>
> Maurizio
>
> On 10/01/2020 11:29, Jorn Vernee wrote:
>> Hi,
>>
>> I'd make one change in both classes:
>>
>>     static final int ELEM_SIZE = 1_000_000;
>>     static final int CARRIER_SIZE = (int)JAVA_INT.byteSize();
>>     static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
>>
>> So that we loop over 1 million ints as well. This maintains the 
>> scaling between 1 -> 1_000_000 and nanoseconds -> milliseconds.
>>
>> You can also still replace the '4' with 'CARRIER_SIZE' in both 
>> classes when initializing the unsafe memory.
>>
>> Otherwise looks good.
>>
>> Cheers,
>> Jorn
>>
>> On 10/01/2020 00:56, Maurizio Cimadamore wrote:
>>> And here's a new revision - I realized that I was not using the BB 
>>> API correctly and was not multiplying the index of the getInt by the 
>>> carrier size.
>>>
>>> http://cr.openjdk.java.net/~mcimadamore/panama/8219852_part2_v3/
>>>
>>> Maurizio
>>>
>>> On 09/01/2020 21:31, Maurizio Cimadamore wrote:
>>>> I have uploaded a new revision of the benchmark. I've now changed 
>>>> both LoopOverConstant and LoopOverNonConstant to use int instead of 
>>>> byte as a carrier, as the byte case is specialized in the BB API 
>>>> (bound check is intrinsified), so I think int is a more 
>>>> representative and complex case.
>>>>
>>>> I also added baseline cases for unsafe in the LoopOverNonConstant 
>>>> as well.
>>>>
>>>> http://cr.openjdk.java.net/~mcimadamore/panama/8219852_part2_v2/
>>>>
>>>> Maurizio
>>>>
>>>> On 09/01/2020 17:41, Maurizio Cimadamore wrote:
>>>>> Here's the benchmark which tests constant segments.
>>>>>
>>>>> http://cr.openjdk.java.net/~mcimadamore/panama/8219852_part2/
>>>>>
>>>>> I've also tweaked your benchmark to test both loop case and single 
>>>>> access case. To do that, I slightly changed the benchmark so that 
>>>>> the benchmark state keeps track of the address, rather than the 
>>>>> segment (to avoid calls to baseAddress() - which is not there in 
>>>>> the other benchmark).
>>>>>
>>>>> Maurizio
>>>>>
>>>>> On 09/01/2020 15:37, Maurizio Cimadamore wrote:
>>>>>> Looks good!
>>>>>>
>>>>>> Maurizio
>>>>>>
>>>>>> On 09/01/2020 15:21, Jorn Vernee wrote:
>>>>>>> On 09/01/2020 15:58, Maurizio Cimadamore wrote:
>>>>>>>> Looks good and works on my machine.
>>>>>>>>
>>>>>>>> I'd suggest a couple of changes:
>>>>>>>>
>>>>>>>> * benchmarks are java/foreign, shouldn't they be 
>>>>>>>> jdk.incubator.foreign, for consistency with module/package name?
>>>>>>> Good point. (I copied what I had from a while back before we 
>>>>>>> switched to the incubator module)
>>>>>>>>
>>>>>>>> * Hoisting seems general as a name - I think what you want to 
>>>>>>>> test here is hoisting when segment is non-final, non-static 
>>>>>>>> variable - I have a similar benchmark for true constant 
>>>>>>>> segments that I'd like to upload, so we need slightly more 
>>>>>>>> precise names :-)
>>>>>>>
>>>>>>> Could do LoopOverNonConstant?
>>>>>>>
>>>>>>> Updated webrev: 
>>>>>>> http://cr.openjdk.java.net/~jvernee/panama/webrevs/8219852/webrev.01/ 
>>>>>>>
>>>>>>>
>>>>>>> Jorn
>>>>>>>
>>>>>>>>
>>>>>>>> Cheers
>>>>>>>> Maurizio
>>>>>>>>
>>>>>>>> On 09/01/2020 14:32, Jorn Vernee wrote:
>>>>>>>>> make test TEST="micro:java.foreign" 
>>>>>>>>> MICRO="VM_OPTIONS=--add-modules jdk.incubator.foreign"


More information about the panama-dev mailing list