simdjson-java
simdjson-java copied to clipboard
selectFrom and rearrange (vectorized lookup tables) are going to be slow
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