相关疑难解决方法(0)

如何加速C++中的矩阵乘法?

我用这个简单的算法进行矩阵乘法.为了更灵活,我使用了包含动态创建数组的matricies对象.

将此解决方案与我的第一个解决方案与静态数组进行比较,速度慢了4倍.我该怎么做才能加快数据访问速度?我不想改变算法.

 matrix mult_std(matrix a, matrix b) {
 matrix c(a.dim(), false, false);
 for (int i = 0; i < a.dim(); i++)
  for (int j = 0; j < a.dim(); j++) {
   int sum = 0;
   for (int k = 0; k < a.dim(); k++)
    sum += a(i,k) * b(k,j);
   c(i,j) = sum;
  }

 return c;
}
Run Code Online (Sandbox Code Playgroud)


编辑
我纠正了我的问题!我在下面添加了完整的源代码并尝试了一些建议:

  • 交换kj循环迭代 - >性能改进
  • 声明dim()operator()() 作为inline- >性能改进
  • 通过const引用传递参数 - > 性能损失!为什么?所以我不使用它.

现在的表现与现在的表现几乎相同.也许应该有一点改进. …

c++ arrays benchmarking matrix-multiplication

17
推荐指数
3
解决办法
2万
查看次数

标签 统计

arrays ×1

benchmarking ×1

c++ ×1

matrix-multiplication ×1