任何JVM的即时编译器是否会生成使用矢量化浮点指令的代码?

16 浏览
0 Comments

任何JVM的即时编译器是否会生成使用矢量化浮点指令的代码?

假设我的Java程序的瓶颈确实是用于计算一系列向量点积的紧密循环。是的,我进行了性能分析,确定它是瓶颈,而且它的影响很大,是的,这就是算法的特性,是的,我已经运行了Proguard来优化字节码等。

任务本质上是计算点积。也就是说,我有两个float[50]数组,我需要计算它们的逐对乘积之和。我知道处理器指令集存在于快速批量执行此类操作,如SSE或MMX。

是的,我可以通过在JNI中编写一些本地代码来访问这些指令集。然而,JNI调用的开销相当大。

我知道无法保证JIT编译什么或不编译什么。有人听说过JIT生成使用这些指令的代码吗?如果是这样,Java代码中有什么可以帮助它以这种方式编译的内容吗?

可能是"不行",但还是值得问一下。

0