我目前正在进行大型数值计算,并且在使用变量(双精度型)时速度是最重要的。想知道是否有更易读的方法来执行以下操作,或者是否有更好的方法使用结构或提升库。
更新:尽管如此,由于许多变量,我最初的目标是最好将变量间接组织到某种容器中,同时将变量维护为对象而不是引用/指针。
1)我将对变量进行大量而冗长的计算,它们按照它们的使用顺序声明并在整个程序中更改
2)当我决定编辑代码时,可以随时将变量添加到程序中(非常频繁)
3) 组织变量(到一个指针容器或其他容器中)对于轻松使用这些对象很重要 - 例如,当我在一段时间后写入所有这些对象的文件时,它将更加精简和高效的代码
我正在考虑创建一个创建类型的类(所有变量对象都是 double 类型)并自动添加到指针向量中 - 作为一个附带问题,这是否有点矫枉过正
我有很多变量像这样进行各种计算(这恰好需要时间):
double varName1 = someValue;
double varName2 = someValue;
double varName3 = someValue;
...
double varNameN = someValue;
...
SOME_COMPUTATION HERE
这是我认为每个变量的可读性最明显的方法。为了存储集合以备将来可能的输出,我将所有内容放入容器中,并为每个元素创建了一个引用变量,如下所示
std::vector<double> store;
...
ADD VALUES TO VECTOR
...
double& varName1 = store[0];
double& varName2 = store[1];
...
但是,当我执行上述方法时,使用引用 (&) 变量的计算成本更高(超时)。然后我决定做相反的事情,存储一个指针向量而不是变量,如果我需要将所有文件写入文件,例如我将使用这个向量并正常对变量执行计算(不是引用)。为此,我想出了以下(丑陋的)方式
std::vector<double*> store;
double create_v(double init, double& d)
{
store.push_back(&d);
d = init;
}
double varName1 = create_v(0.05,varName1);
我在徘徊,如果 1) 有一个更好的实现,使用模板/增强的可读性来做同样的事情,或者 2) 像我这样的 C++ 初学者应该知道另一种方法吗?3)优化我没有考虑最小化上面提到的一些开销(我用 -O2 和 -O3 测试,我使用 g++4.7.2)