我们正在计算一些运行时间受矩阵运算约束的东西。(如果有兴趣,下面的一些细节。)这次经历引发了以下问题:
人们对矩阵数学(例如,乘法、逆运算等)的 Java 库的性能有经验吗?例如:
我搜索并一无所获。
我们的速度比较的详细信息:
我们正在使用英特尔 FORTRAN (ifort (IFORT) 10.1 20070913)。我们使用 Apache commons math 1.2 矩阵运算在 Java (1.6) 中重新实现了它,并且它同意它的所有数字精度。(我们有理由在 Java 中使用它。)(Java doubles,Fortran real*8)。Fortran:6 分钟,Java 33 分钟,同一台机器。jvisualm 分析显示在 RealMatrixImpl.{getEntry,isValidCoordinate} 中花费了很多时间(这似乎在未发布的 Apache commons math 2.0 中消失了,但 2.0 并没有更快)。Fortran 正在使用 Atlas BLAS 例程(dpotrf 等)。
显然,这可能取决于我们在每种语言中的代码,但我们相信大部分时间都是在等效矩阵运算中。
在其他几个不涉及库的计算中,Java 并没有慢很多,有时甚至快得多。