不使用函数来提高速度?(C++)

Mic*_*l B 0 c++ performance execution-time

我正在为班级的比赛编写程序。它已经很好用了,现在我正在努力让它尽可能快。我的问题是 - 与制作用户定义的函数相比,只是粘贴函数返回的内容,无论我想在哪里使用它,都可以加速我的程序吗?我知道函数调用会导致内存跳转,那么这样做是否可以显着加速我的代码?在这种情况下,我不关心可读性

例如。而不是这样做

while(something){
y = function();
}
double function(){
return f(x);
}
Run Code Online (Sandbox Code Playgroud)

我这样做

while(something){
y = f(x);
}
Run Code Online (Sandbox Code Playgroud)

我已经做了一些事情,比如通过引用传递结构、避免强制转换、使用移位操作、使用诸如 ++i 之类的东西来加快执行时间,我希望获得一点优势。

Iod*_*Pit 5

一般来说,这些都不重要。

优化编译器真的非常擅长确定何时执行强度降低(将乘法转换为加法或移位)或内联(消除函数调用的开销)。

作为人类,您应该将时间和精力集中在编写简洁、可维护和可读的代码上,并具有正确的算法复杂性,然后依靠编译器进行正确的优化。

在极少数情况下,您可能会发现手动内联(您正在执行的操作)会产生显着的性能优势,但您应该让分析器引导您找到这样做有益的地方。这样做不仅仅是因为你认为它会更快,因为它通常不会。

此外,您在评论回复中指出您没有使用-O3. 这意味着您没有从编译器那里得到优化帮助。添加-O3.