gpt4 book ai didi

c++ - 如何最小化以下代码中的浮点运算

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:20 25 4
gpt4 key购买 nike

我需要在下面的代码中最小化触发器的总数,谁能快速看一下并告诉我应该在哪里努力?我尝试了几种性能分析器,但结果无关紧要..

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;
}

谢谢,赵

最佳答案

是的,我没有读完最后一行,但看起来你只是:

  1. 生成随机整数
  2. 将它们存储为double
  3. 添加它们
  4. 相加和相乘

IOW - 我完全没有看到分数有任何用处,适当大小的整数会更好。如果是这样,您可以删除程序中的每个 FLOP ;)

如果这不是一个准确的信号,您仍然可以在适当的范围内使用它,然后只需放大信号,存储为整数,然后在某些情况下将结果降低到适当的范围。

对于适当大小的 mul/add,使用整数会更快并且可能需要更少的内存——您也可以对它们应用 SIMD 指令。

除此之外 - 您改进的缓存局部性、最小化分支和最小化动态分配也可以使程序快几倍。

关于c++ - 如何最小化以下代码中的浮点运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com