首先,对不起我的英语不好,但我需要你的帮助。
我已经使用 java swing 开发了一个模拟程序,其中我使用了很多矩阵计算。我的程序刚刚完成,但我需要加快我的表现。所以我使用了 java visual vm profiler 来识别性能问题。我认识到 Jama 矩阵的初始化需要很多时间。运行我的程序后,JAMA 为我分配了超过 3 MB 的对象。很多,不是吗?我认为这就是性能不好的原因。
有没有比 jama 更好的矩阵库?我正在使用 3x3 矩阵,我需要乘法和逆运算,或者我还能做什么?
首先,对不起我的英语不好,但我需要你的帮助。
我已经使用 java swing 开发了一个模拟程序,其中我使用了很多矩阵计算。我的程序刚刚完成,但我需要加快我的表现。所以我使用了 java visual vm profiler 来识别性能问题。我认识到 Jama 矩阵的初始化需要很多时间。运行我的程序后,JAMA 为我分配了超过 3 MB 的对象。很多,不是吗?我认为这就是性能不好的原因。
有没有比 jama 更好的矩阵库?我正在使用 3x3 矩阵,我需要乘法和逆运算,或者我还能做什么?
通常矩阵数学库没有针对小矩阵的速度进行优化。您可以通过拍摄一些堆栈快照来亲眼看看,这些堆栈快照很可能会在诸如内存分配和选项检查之类的开销功能中显示出很大一部分时间。
您可以做的(我已经做过)是编写特殊用途的例程来进行乘法和逆运算,因为您知道矩阵是 3x3。乘法是微不足道的,你可以展开整个事情。
也可以用比咖啡更少的代码来完成 3x3 矩阵的逆运算:) Wikipedia 为您提供了公式。
不管你做什么,尽量减少内存分配。