是否可以在Java8中执行SIMD比较指令?

时间:2017-06-20 05:03:14

标签: java java-8 simd

在Java8中,可以执行一些SIMD指令,如本文http://prestodb.rocks/code/simd/所述。

我想知道是否可以在Java8中执行SIMD比较指令。

我想检查两个字符(UTF-16,16位数)的相等性,如果它们相同则得到0xffff的值,如果不是快速则得到0x0。我有一个大的char数组,我想通过循环数组在每个char元素和一个特定的char(如0x0022)之间执行上述等式检查。

是否可以在Java8中执行SIMD比较指令?或者是否有任何可以有效和快速地执行字符比较的按位操作或算法?

感谢。

1 个答案:

答案 0 :(得分:4)

根据this

jdk-9中的数组等式被矢量化(如果可能的话,我可以告诉它)

甚至该方法内部也有一个定义:

@HotSpotIntrinsicCandidate
static int vectorizedMismatch...

但这并没有移植到jdk-8。

就按位操作而言, lot 的操作已经被篡改;由@HotSpotIntrinsicCandidate注释表示。

最好用一些选项进行实际测试,例如:

 -XX:-TieredCompilation 
 -XX:CICompilerCount=1
 -XX:+UnlockDiagnosticVMOptions 
 -XX:+PrintCompilation 
 -XX:+PrintInlining 

并检查您是否有这样的条目:Unsafe::getAndAddInt (27 bytes) (intrinsic)

最后一个明显的观点可能是你的速度目标是什么?即使你没有实际可能认为你想要的内在函数,速度也可能在你想要的范围内。

相关问题