首页 文章

Matrix库与用于Java中的元素操作的循环

提问于
浏览
0

我想在大小为800x300元素的浮点数组上做一些元素操作(加法,乘法,sqrt等) .

使用矩阵库(JAMA,EJML等),只需在for循环中执行元素操作,我可以获得多少加速(如果有的话)?

因为循环看起来更有吸引力,因为我的方程式会变得复杂,并且for循环意味着我可以保持所有方程式 - 用普通的旧中缀表示法 . 由于java不支持运算符重载,因此使用矩阵库不会那么简单 . 所以,我只想使用矩阵库,如果它意味着真正的加速 . (速度在这里很重要 . )

1 回答

  • 2

    我建议你使用一些矩阵库 . 在大多数情况下,它应该像循环一样简单 . 但它也可以跑得更快 . 那么,你将获得免费的东西:API和相同或更好的性能 . 在编写元素操作时,它还节省了一些时间 .

    作为la4j库的作者,我可以说使用第三方库让您有机会从新版本获得更快更快的代码 . 例如 . 您可以根据需要选择la4j . 当前(版本0.4.0-0.4.5)使用简单的for循环计算进行逐元素运算 . 因此,它在为la4j开发新的 parallel engine 的过程中赢得了't be faster then hand-written code. But, I' m,它允许以并行模式运行代码而不会对API进行任何重大更改 . 像这样:

    Matrix a = new Basic2DMatrix(...); // simple 2D array matrix
    Matrix b = new Basic2DMatrix(...); // that is too
    
    Matrix c = a.multiply(b); // a * b in sequental mode
    
    Matrix c = a.par().multiply(b); // a * b in parallel mode
    

    因此,您需要做的就是更改一段代码 . 所有这些优势都可以通过像la4j这样的库免费获得 . 让图书馆完成他们的工作并花费你解决实际问题 .

相关问题