Hello, My name is Arnav Somaghatta and I am a rising developer who is 14 years old and is interested in contributing performance improvements to existing primitive array operations in the JDK, especially by introducing vectorized fast paths where applicable.
Based on benchmarking work with small primitive arrays, I have observed that certain operations, such as scans and comparisons, still rely on scalar loops that may leave SIMD/vectorization potential unused in some cases. As a small concrete example, I ran a JMH benchmark comparing Arrays.mismatch(byte[], byte[]) against an equivalent naive scalar implementation across 64 byte, 256 byte, 1024 byte, and 8192 byte arrays, each with a single mismatch at the end. On my PC, using JDK 21 and JMH 1.37, Arrays.mismatch runs at about 4.5 ns/op, 9.9 ns/op, 28.5 ns/op, and 207.9 ns/op for those sizes, respectively, while the naive loop takes about 15.9 ns/op, 50.9 ns/op, 216.0 ns/op, and 1656.7 ns/op, respectively. That is approximately a 3.5x speedup at 64 bytes, 5.1x at 256 bytes, 7.6x at 1024 bytes, and 8.0x at 8192 bytes. This suggests that optimized implementations can provide substantial wins even for relatively small primitive arrays, and I would like to explore whether similar fast paths could be applied more broadly in core library array operations. I am not proposing any new public APIs. Instead, my goal is to work on improving the internal implementations of existing methods such as: - Arrays.mismatch(...) - primitive array equality checks - byte/char scan heavy operations (like String related internals) My intent is to investigate whether SIMD or vector based implementations, via the Vector API or intrinsics where appropriate, could provide meaningful performance improvements for small to medium arrays without negatively affecting maintainability. I would like to do the implementation work myself; however, before I begin prototyping, I wanted to ask whether this direction is considered viable for core libs work, and if there are specific implementation areas that would be most appropriate to target first. Thank you so much for your time. Best regards, Arnav
