Performance 加速反复调用同一函数的代码

Performance 加速反复调用同一函数的代码,performance,computation-theory,memory-efficient,computation,space-efficiency,Performance,Computation Theory,Memory Efficient,Computation,Space Efficiency,我有一个矩阵,比如说a,大小mxn.我必须为整个矩阵中的每一列调用相同的函数。到目前为止,我一直在提取每一列,并调用该列上的函数迭代到N。i、 e.(列数) 有什么更好/更快的方法吗 谢谢你的帮助。感谢现在,如果可以的话,您可以使用并行计算提高性能 CPU是多核/多线程的 例如,您可以使用Java8流和并行计算 比如说 @Test 2 public static void matrixVectorProduct() { 3 System.out.println("Matrix

我有一个矩阵,比如说a,大小mxn.我必须为整个矩阵中的每一列调用相同的函数。到目前为止,我一直在提取每一列,并调用该列上的函数迭代到N。i、 e.(列数)

有什么更好/更快的方法吗


谢谢你的帮助。感谢现在,如果可以的话,您可以使用并行计算提高性能

CPU是多核/多线程的

例如,您可以使用Java8流和并行计算

比如说

@Test 
  2 public static void matrixVectorProduct() {
  3     System.out.println("Matrix Vector multiplication"); 
  4     final int DIM = 5;
  5          
  6     int [][]a = new int[DIM][DIM]; 
  7     int counter = 1;
  8     for (int i = 0; i < a.length; i++) {
  9         for (int j = 0; j < a[0].length; j++) {
 10             a[i][j] = counter++; 
 11         } 
 12     } 
 13          
 14     int []v = new int[DIM]; 
 15     Arrays.fill(v, 5);        
 16     int []c = new int[DIM]; 
 17          
 18     IntStream.range(0, c.length) 
 19              .parallel() 
 20              .forEach( (i) ->  { 
 21                  IntStream.range(0, a.length)
 22                           .sequential() 
 23                           .forEach( (j) -> { c[i] += v[j] * a[i][j]; }); 
 24                          }); 
 25   
 26          
 27     int []expected = new int[]{75, 200, 325, 450, 575};
 28     assertArrayEquals(expected, c); 
 29          
 30     System.out.println("Matrix-Vector product: " + Arrays.toString(c));         
 31 }
@测试
2公共静态无效矩阵VectorProduct(){
3系统输出println(“矩阵向量乘法”);
4最终int DIM=5;
5.
6 int[]a=新int[DIM][DIM];
7整数计数器=1;
8表示(int i=0;i{
21 IntStream.范围(0,a.长度)
22.顺序的()
23.forEach((j)->{c[i]+=v[j]*a[i][j];});
24                          }); 
25
26
27 int[]预期=新int[]{75200325450575};
28个资产质量(预计为c);
29
30 System.out.println(“矩阵向量积:“+Arrays.toString(c));
31 }

您是否考虑过换位,然后只传递行?由于缓存利用率的提高,您可能会获得性能的提高,并且您将消除提取列所需的时间。但是如果没有一些代码来查看其他瓶颈可能在哪里,那么很难说。