通过JNI更快的Math.exp()?

 2023-01-21    288  

问题描述

我需要经常从java计算Math.exp(),是否可以使本机版本比 java ‘s Math.exp() ??

更快地运行速度.

通过JNI更快的Math.exp()?

我只尝试了JNI + C,但是比纯 Java .

慢.

推荐答案

+1编写自己的EXP()实现.也就是说,如果这是您应用程序中的瓶颈.如果您可以处理一些不准确性,那么那里有许多极其有效的指数估计算法,其中一些可以追溯到几个世纪.据我了解,Java的Exp()实现也很慢,即使对于必须返回”精确”结果的算法.

哦,不要害怕在Pure-Java中写入Exp()实现. JNI有很多开销,JVM能够在运行时优化字节码,甚至超出C/C ++能够实现的目标.

其他推荐答案

已经多次请求此要求(请参见在这里).这是Math.exp()的近似值,从此博客发布:

public static double exp(double val) {
    final long tmp = (long) (1512775 * val + (1072693248 - 60801));
    return Double.longBitsToDouble(tmp << 32);
}

它基本上与一个具有2048个条目的查找表和条目之间的线性插值相同,但是所有这些都带有IEEE浮点技巧.它的5倍比我的机器上的Math.exp()快,但是如果您使用-Server编译.

可能会大不相同.

其他推荐答案

使用Java.

另外,EXP的缓存结果,然后您可以更快地查找答案.

以上所述是小编给大家介绍的通过JNI更快的Math.exp()?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26210.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。