我注意到matlab确实很快就能完成一些矩阵函数,例如,即使矩阵很大,也会立即对n*n数组的所有元素添加5,因为你不需要遍历每个元素,在java中也是如此如果矩阵很大,for循环将永远存在.
我有两个问题,java中是否有高效的内置类用于执行矩阵运算,其次我如何编写代码来更有效地更新java中大矩阵的所有元素.
只是偶然发现这个帖子,并认为我会把我的两分钱扔进去.我是EJML的作者,我也在研究java库的性能和稳定性基准.虽然确定算法的速度有几个问题,但Mikhail认为缓存是大型矩阵性能中非常重要的问题.对于较小的矩阵,库开销变得更加重要.
由于数组访问的开销,纯Java库比高度优化的c库慢,即使算法完全相同.一些图书馆通过调用本机代码解决了这个问题.你可能想看看
http://code.google.com/p/matrix-toolkits-java/
这正是如此.将内存从java复制到本机库会有一些开销,但对于大型矩阵,这是无关紧要的.
有关纯Java性能的基准测试(我正在研究的那个),请查看:
http://code.google.com/p/java-matrix-benchmark/
另一个基准是:
http://www.ujmp.org/java-matrix/benchmark/
这些基准测试中的任何一个都可以让您对大型矩阵的性能有所了解.