我正在运行一个模拟,需要一些时间来运行,我想改进它.根据我的理解,将值传递给函数意味着复制的值很慢.有没有办法在一个专用文件中包含一些函数,我不需要复制值?
我不介意做"错误的编程"(全局变量,公共访问等)以获得速度.
谢谢
编辑:当我开始我的项目时,我测试了几个循环.我计算了这种循环的开始和结束之间的处理器风格:
int i = 0;
while (i < 10000000){
i = doStuff(i); //or doStuff();
}
int doStuff(i){
return i++;
}
int doStuff(){
return i++;
}
Run Code Online (Sandbox Code Playgroud)
我很确定doStuff()案例的速度要快10倍.我已将我以前的代码更改为全局变量和直接访问("错误的编程"),它显着改善了我的运行时间.我试图使用引用,但我有一些固有的问题阻止我这样做(我不记得它是什么).无论如何,我现在正在玩gprof.
你可以使用参考.如果你有一些功能:
void Examine(BigHairyObject o) {
cout << o.data[1234]; /* for example */
}
Run Code Online (Sandbox Code Playgroud)
您可以通过传递对该对象的引用来避免副本:
void Examine(BigHairyObject & o) {
cout << o.data[1234]; /* use is identical */
}
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是,你只是指原始对象,而不是它的一些副本.因此,如果您修改o(在此示例中),您实际上是在修改调用者的对象.
如果您希望保证不修改对象(在这种情况下,引用通常与副本一样好),请使用const关键字:
void Examine(const BigHairyObject & o) {
cout << o.data[1234]; /* use is identical */
// o.data[1234] = 5; // would cause compile error.
}
Run Code Online (Sandbox Code Playgroud)