Description
When parsing strings with SIMD instructions, vectorized table lookup like vpshufb
(x64) or vtbl
(NEON) are critically important. They are very cheap (often run in 1 cycle) and very powerful. And indeed, the simdjson-java library makes extensive use of rearrange
and selectFrom
(part of the Java Vector API). At a glance, it may appear that rearrange
and selectFrom
are just wrapper around the fast underlying instructions (e.g., vpshufb
or vtbl
). But they are not. They generate a long flow of instructions. So it is unlike C#/dotnet where you have Ssse3.Shuffle
or AdvSimd.Arm64.VectorTableLookup
for example.
Thus, I am afraid that it its current state, Java Vector might be "performance challenged". It is simply too high level.
I have reported the design issue. See https://mail.openjdk.org/pipermail/panama-dev/2024-June/020476.html