C++ 如何在下面的代码中最小化浮点操作
我需要在下面的代码中最小化失败的总数,有人能快速看一下并告诉我该把我的努力放在哪里吗? 我试过几种性能分析器,但结果并不相关C++ 如何在下面的代码中最小化浮点操作,c++,flops,C++,Flops,我需要在下面的代码中最小化失败的总数,有人能快速看一下并告诉我该把我的努力放在哪里吗? 我试过几种性能分析器,但结果并不相关 int twoDToOneD(int i, int j, int nRows) { return j*nRows + i; } double* addMatrices(int m, int n, double* A, double* B, bool add) { double* C = new double[m*n]; double* pA = A; double* p
int twoDToOneD(int i, int j, int nRows)
{
return j*nRows + i;
}
double* addMatrices(int m, int n, double* A, double* B, bool add)
{
double* C = new double[m*n];
double* pA = A;
double* pB = B;
double* pC = C;
int i = m*n;
while(i--)
{
if(add)
{
*pC = *pA + *pB;
} else
{
*pC = *pA - *pB;
}
pC++;
pA++;
pB++;
}
return C;
}
谢谢,
Cho对,我没有读到最后一行,但看起来你只是:
double
s除此之外,改进缓存位置、最小化分支和最小化动态分配也可以使程序速度提高几倍。有什么原因不能使用SIMD吗?由于这都是基于矩阵的,它可能作为GPGPU内核表现最好。是的,你可以在vc6的任何版本中使用,更多的是关于你的目标平台是否支持SSE1/2/3/4