RFR: 8349452: Fix performance regression for Arrays.fill() with AVX512 [v11]
Srinivas Vamsi Parasa
sparasa at openjdk.org
Fri Jan 16 20:26:42 UTC 2026
On Tue, 6 Jan 2026 08:47:56 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> Srinivas Vamsi Parasa has updated the pull request incrementally with one additional commit since the last revision:
>>
>> cleanup code related to labels
>
> And since this is a regression ... why not also plot the performance from before [JDK-8275047](https://bugs.openjdk.org/browse/JDK-8275047), so we have a more complete picture?
Hi Emanuel (@eme64),
Please see the updated data as you suggested.
This PR (ArrayFill intrinsic with unmasked stores) only applies for:
- Arrays of data type `byte`, `short` and `int` only
- size <= 128 bytes for `MaxVectorSize=32` or `AVX3Threshold > 0`
- size <=192 bytes for `MaxVectorSize=64` or `AVX3Threshold = 0`
Thus, the performance data using your vector bulk operations JMH micro was obtained for sizes upto 200.
Below are the plots for array fill with a variable value starting from a variable offset for `MaxVectorSize=32`
@Benchmark
@OperationsPerInvocation(REPETITIONS)
public void fill_var_byte_arrays_fill() {
for (int r = 0; r < REPETITIONS; r++) {
int offset_store = offsetStore(r) + REGION_SIZE + REGION_2_BYTE_OFFSET;
Arrays.fill(aB, offset_store, offset_store + NUM_ACCESS_ELEMENTS, varB);
}
}
<img width="752" height="454" alt="image" src="https://github.com/user-attachments/assets/c4f2370b-979b-4714-a126-c44f9faedfb7" />
<img width="752" height="455" alt="image" src="https://github.com/user-attachments/assets/0fc2fe84-0f9c-435f-aacd-fe3ea350aff7" />
<img width="752" height="455" alt="image" src="https://github.com/user-attachments/assets/29d29ea0-cedc-4931-8bd1-e915d27744eb" />
[continued below with more data]
-------------
PR Comment: https://git.openjdk.org/jdk/pull/28442#issuecomment-3761659799
More information about the core-libs-dev
mailing list