我目前正在进行大型数值计算,并且在使用变量(类型为double)时速度是最重要的。想知道是否有更可读的方式来执行以下操作,或者如果使用结构或增强库有更好的方法。C++组织计算的变量 - 速度和可读性
UPDATE:经过一段时间后,由于许多变量,我的最初目标是将变量间接组织到某种容器中,最好将变量保持为对象而不是引用/指针。
1)我将在变量做的大和冗长的计算,他们在声明的顺序使用它们和整个程序
2)变量可以被添加到该程序改变在我决定编辑整理变量的代码(相当频繁)
3)任何时间(为指针的容器或其他)是为了便于与这些对象共同工作的重要 - 这将是更加精简当我例如高效的代码写一段时间
我当时就想,反而让创造一个类型的类后,文件中的所有这些对象(所有的变量对象是双精度型),并自动添加到指针的载体 - 作为一个方面的问题,这会不会矫枉过正
我有很多的变量做各种计算的,像这样(这正好需要时间):
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)
你究竟想要做什么?紧密优化几乎总是需要具体情况的知识。我不会肯定地说任何一种方法比其他方法都快,但我会说避免使用指针和引用可能会有所帮助。此外,为了从缓存本地获益,请尝试按照它们的使用顺序进行声明。 – Wug 2013-03-17 06:49:57
@Wug感谢您的评论。为了清晰起见,我更新了上面的内容,其中有更多的信息,新的部分以粗体显示 – woosah 2013-03-17 15:32:25