如何在下面的代码中最小化浮点运算
How to minimize floating point operations in the below code
我需要在下面的代码中尽量减少失败的总数,有人能快速查看一下并告诉我该把精力放在哪里吗?我试过几个性能分析器,但结果都无关紧要。。
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
没错,我没有读完最后一行,但看起来你只是:
- 生成随机int
- 将它们存储为
double
s - 添加它们
- 将它们相加并相乘
IOW-我根本看不到分数的任何用途,适当大小的整数会更好。如果这是真的,您可以删除程序中的每个FLOP;)
如果这不是一个准确的信号,您仍然可以在适当的范围内使用它,然后将信号放大,存储为整数,然后在某些情况下将结果降回适当的范围。
对于大小适当的mul/add,使用整数会更快,并且可能需要更少的内存——您也可以对它们应用SIMD指令。
除此之外,改进缓存位置、最小化分支和最小化动态分配也可以使程序速度提高几倍。
相关文章:
- 找到两对数字,使它们的乘积的绝对差最小化
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 超轻 - 如何最小化窗口
- 在C++中使用 GSL 最小化
- 使用双精度的浮点运算
- 在C++中最小化变量的范围
- 当只有一个线程主要使用该对象而其他线程很少使用它时,如何最小化该对象的互斥锁锁定?
- "最小化"按钮不会出现在 MFC 对话框中
- 从小于或等于某个 N 的数字列表中最小化或找到 n 个理想的子集和
- 如何排列二进制字符串以最小化它们之间的距离
- 最小化 C++ 中的内存使用
- 将异常字符串解析为向量上的浮点运算?
- -O1改变浮点运算
- 如何使 msvc 矢量化浮点添加?
- 禁用 GPO 的空气抖动最小化
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 将浮点运算与 Z3 C++ API 结合使用
- 如何使用 stl 最小化 c++ 中所有打开的窗口
- 如何最小化嵌入式平台上的内存分配
- 如何在下面的代码中最小化浮点运算