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

Not using functions for speed? (C++)

我正在为 class 中的竞赛编写程序。它已经很好用了,现在我正在努力让它尽可能快。我的问题是 - 与创建用户定义的函数相比,将什么函数 returns 粘贴到任何我想使用它的地方,是否会加速我的程序?我知道函数调用会导致内存跳跃,那么这样做是否显着加快了我的代码速度? 在这种情况下我不关心可读性

例如。而不是这样做

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

我这样做

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

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

一般来说,none 应该很重要。

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

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

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

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