我需要在以下代码中尽量减少触发器的总数,有人可以快速查看并告诉我在哪里付出努力吗? 我已经尝试了几种性能分析仪,但结果无关紧要。
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;
}
谢谢, 町
答案 0 :(得分:0)
是的,我没有读过最后一行,但看起来你很简单:
double
s IOW - 我没有看到任何分数的使用,并且适当大小的整数将更优越。如果这是真的,你可以删除程序中的每个FLOP;)
如果这不是一个准确的信号,你仍然可以在适当的范围内使用它,然后只需将信号放大,存储为整数,然后在某些情况下将结果恢复到适当的范围。
对于适当大小的mul / add,使用整数会更快并且可能需要更少的内存 - 您也可以对它们应用SIMD指令。
除此之外 - 改进缓存局部性,最小化分支和最小化动态分配也可以使程序快几倍。