我们目前正在用C++编写一些性能关键代码,它们可以在许多大型矩阵和向量上运行.关于我们的研究,std::array标准C阵列之间应该没有重大的性能差异(参见这个问题或者这个).但是,在测试过程中,我们通过使用C阵列获得了巨大的性能提升std::array.这是我们的演示代码:
#include <iostream>
#include <array>
#include <sys/time.h>
#define ROWS 784
#define COLS 100
#define RUNS 50
using std::array;
void DotPComplex(array<double, ROWS> &result, array<double, ROWS> &vec1, array<double, ROWS> &vec2){
for(int i = 0; i < ROWS; i++){
result[i] = vec1[i] * vec2[i];
}
}
void DotPSimple(double result[ROWS], double vec1[ROWS], double vec2[ROWS]){
for(int i = 0; i < ROWS; i++){
result[i] = vec1[i] * vec2[i];
}
}
void MatMultComplex(array<double, ROWS> &result, array<array<double, COLS>, ROWS> …Run Code Online (Sandbox Code Playgroud)