simdjson-java icon indicating copy to clipboard operation
simdjson-java copied to clipboard

selectFrom and rearrange (vectorized lookup tables) are going to be slow

Open lemire opened this issue 1 year ago • 2 comments
trafficstars

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

lemire avatar Jun 18 '24 21:06 lemire