返回常量的函数是否比void函数慢?

Does a function that returns a constant work slower than a void function?

本文关键字:函数 void 是否 常量 返回      更新时间:2023-10-16

最简单的例子:

int foo()
{
   doSomething();
   return 0;
}
void bar()
{
   doSomething();
   return;
}
int main()
{
   foo();
   bar();
}

barfoo快,为什么?

这是一个微优化,你不应该甚至考虑它。然而,在谈论性能时,通常需要注意的是:

  • 再次测量
  • 改变一些事情
  • 确保你理解你在测量什么以及为什么变化会产生影响
  • 用新的理解再改变一点,检查前提是否成立

对于返回一个小对象的特殊情况(可以放在寄存器中),成本可以忽略不计,在大多数体系结构中基本上是加载到寄存器中。

void将是…但仍然可以忽略不计。

系统中的返回值通过x86上的eax寄存器传递。在大多数系统中,它只是一个推入寄存器,然后可能在返回到调用函数时创建对象。由于返回这样的东西只会向ax发送一个0,这可能会减少一个汇编命令,因为void可能不会调用它,并且当它返回到调用函数时不需要赋值int。

无论哪种方式,这都不会提高您编写的任何应用程序的性能。如果您有性能问题,请查看其他地方:)