gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:41 24 4
gpt4 key购买 nike

在Java8中,可以像本文一样执行几种SIMD指令http://prestodb.rocks/code/simd/说。

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

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

在Java8中是否可以执行SIMD比较指令?或者有什么位操作或算法可以高效快速地执行字符比较吗?

谢谢。

最佳答案

根据 this,数组相等性在 jdk-9 中被矢量化(如果可能的话,据我所知)。

即使方法内部也有这样的定义:

@HotSpotIntrinsicCandidate
static int vectorizedMismatch...

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

就按位操作而言,很多操作已经得到加强;如 @HotSpotIntrinsicCandidate 注释所示。

最好的办法是使用以下几个选项进行实际测试:

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

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

最后一个明显的问题可能是您的速度目标是什么?即使您没有在实际认为需要的地方获得内在函数,速度也可能在您想要的范围内。

关于java - 是否可以在Java8中执行SIMD比较指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44644184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com