9

我正在做一个项目(在 Scala 中),我需要处理一些非常大的数字;太大而无法用整数类型表示。Java 提供了 BigInteger 和 BigDecimal 类(scala 提供了一个很好的瘦包装器)。但是,我注意到这些库比我过去使用过的其他任意精度库(即http://www.ginac.de/CLN/)要慢得多,而且速度差异似乎比可以归因的更大单独的语言。

我对我的程序进行了一些分析,44% 的执行时间花费在 BigInteger 乘法方法上。我想加快我的程序速度,所以我正在寻找比 BigInteger 类(及其 Scala 包装器)更快、更高效的选项。我看过 LargeInteger(来自 JScience)和 Aint(来自 Afloat)。但是,两者的执行似乎都比标准 BigInteger 类慢。

有谁知道专注于高性能整数乘法和加法的 Java(或在 JVM 上可用)任意精度数学库?

4

2 回答 2

2

我有点晚了......好吧,我只知道 apfloat 库,在 C++ 和 Java 中都可用。 Apfloat库:

于 2013-03-09T12:31:29.603 回答
1

不幸的是,我认为您对 Java 本地库不走运。我还没有找到一个。我推荐使用 JNI 封装具有出色任意精度性能的 GMP。有 JNI 开销,但如果你在 1500 位范围内,与算法复杂度的差异相比,这应该很小。您可以找到 Java GMP 的各种包装(我相信最流行的包装在这里)。

于 2012-04-26T15:10:19.173 回答