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

标签 java c optimization java-native-interface

我需要经常从 java 计算 Math.exp(),是否有可能让 native 版本比 javaMath 运行得更快.exp()??

我只尝试了 jni + C,但它比普通的 java 慢。

最佳答案

这已经被要求多次(参见例如 here )。这是 Math.exp() 的近似值,复制自 this blog posting :

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

它基本上与具有 2048 个条目和条目之间的线性插值的查找表相同,但所有这些都使用了 IEEE 浮点技巧。它比我机器上的 Math.exp() 快 5 倍,但如果您使用 -server 编译,这可能会有很大差异。

关于java - 通过 JNI 更快的 Math.exp()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66402/

相关文章:

algorithm - 背包(或分区)算法的变体

java - 最佳实践 - 根据用户选择构建查询

java - 如何更改 JMenuBar 中 JMenus 的方向

c - 在c中读取一个字符和一个数字

c++ - 为什么在线程中使用 system() 时,多线程 C 程序会在 Mac OS X 上强制使用单个 CPU?

c++ - 如何以最少的重复管理并行和顺序版本代码?

python - 这种内部 Python 优化如何用于数学表达式?

java - postgres 中 "timestamp with time zone"类型的 Jooq 绑定(bind)

java - 尝试上传时无效的 CSRF token Spring 4 MVC

C - 将指针传递给字节