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

问题描述

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

例如。而不是这样做

while(something){
y = function();
}
double function(){
return f(x);
}

我这样做

while(something){
y = f(x);
}

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

>

解决方法

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

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

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

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

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