小编典典

Java矩阵数学库的性能?

java

我们正在计算某种其运行时间受矩阵运算约束的东西。(如果感兴趣,请在下面提供一些详细信息。)这种经历提示了以下问题:

人们是否对使用Java库进行矩阵数学运算(例如,乘法,逆运算等)有经验?例如:

  • JAMA
  • COLT
  • Apache commons math

我搜索后什么也没找到。

我们的速度比较细节:

我们正在使用Intel FORTRAN(ifort(IFORT)10.1 20070913)。我们已经使用Apache Commons Math 1.2矩阵操作在Java(1.6)中重新实现了它,并且它同意其所有准确性。(我们有使用Java的理由。)(Java加倍,Fortran real * 8)。Fortran:6分钟,Java 33分钟,同一台计算机。jvisualm性能分析显示在RealMatrixImpl。{getEntry,isValidCoordinate}上花费了很多时间(在未发布的Apache Commons Math 2.0中似乎消失了,但是2.0并没有更快)。Fortran使用Atlas BLAS例程(dpotrf等)。

显然,这可能取决于我们使用每种语言编写的代码,但是我们相信大多数时间都在等效的矩阵运算中。

在其他一些不涉及库的计算中,Java的运行速度并不慢,有时甚至快得多。


阅读 628

收藏
2020-03-16

共1个答案

小编典典

只是加上我的2美分。我已经比较了其中一些库。我试图将3000乘以3000的双精度矩阵与其自身相乘。结果如下。

将多线程ATLAS与C / C ++,Octave,Python和R配合使用,所需时间约为4秒。

结合使用Jama和Java,花费的时间为50秒。

将Colt和Parallel Colt与Java结合使用,花费的时间为150秒!

将JBLAS与Java结合使用时,由于JBLAS使用多线程ATLAS,因此再次花费了大约4秒钟的时间。

因此对我来说,很明显Java库的性能不是很好。但是,如果有人必须用Java编写代码,那么最好的选择是JBLAS。Jama,Colt和Parallel Colt速度不快。

2020-03-16