私は非常に大きな数を操作する必要があるプロジェクト(Scalaで)に取り組んでいます。積分型で表現するには大きすぎます。 JavaはBigIntegerクラスとBigDecimalクラスを提供します(スカラーは、それらの周りに素敵な薄いラッパーを提供します)。しかし、これらのライブラリは過去に使用した他の任意の精度ライブラリ(すなわちhttp://www.ginac.de/CLN/)よりも大幅に遅く、速度差は言語単独に起因する可能性があるよりも大きいようです。JVM任意精度ライブラリ
私は自分のプログラムのプロファイリングを行い、実行時間の44%がBigIntegerの乗算メソッドで費やされています。私はプログラムを少しスピードアップしたいので、BigIntegerクラス(およびScalaラッパー)よりも高速で効率的なオプションを探しています。私はLargeInteger(JScienceから)とAint(Afloatから)を見てきました。しかし、両方とも標準のBigIntegerクラスよりも遅く実行されるようです。
高性能整数の乗算と加算に焦点を当てたJava(またはJVMで利用可能)の任意精度の数学ライブラリを知っている人はいますか?
ここでいくつかの良い経験http://stackoverflow.com/questions/277309/java-floating-point-high-precision-library – thoredge
感謝があるようです。しかし、私はこの質問を見て、JScienceライブラリとAFloatライブラリ(私が言ったように、BigIntegerよりも遅いようです)を試しました。これは、私の数字がサイズ(約1500桁)の夕暮れゾーンにあるためです。いずれにしても、操作がはるかに高速になることがわかっています(C++コードがこれを達成したため)。言語の違いに加えて、変更可能性(不変のJava implsに対して)も有効です。 – nomad