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

时间:2013-05-20 16:42:02

标签: c++ performance

突出差异的最简单示例:

int foo()
{
   doSomething();
   return 0;
}

void bar()
{
   doSomething();
   return;
}

int main()
{
   foo();
   bar();
}

barfoo更快,为什么?

2 个答案:

答案 0 :(得分:14)

这是一种微观优化,您从不甚至不得不考虑它。然而,在谈论表演时常见的警告:

  • 测量
  • 再次测量
  • 改变一些事情
  • 测量
  • 确保您了解您所测量的内容以及更改产生影响的原因
  • 使用新的理解再次更改它,并检查前提是否成立

在返回一个小对象(适合寄存器的东西)的特殊情况下,成本可以忽略不计,基本上是大多数架构中寄存器的负载。

答案 1 :(得分:7)

无效将是......但仍然可以忽略不计。

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

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