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

Boy*_*nov 0 c++ performance

突出差异的最简单示例:

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

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

int main()
{
   foo();
   bar();
}
Run Code Online (Sandbox Code Playgroud)

barfoo,为什么?

Dav*_*eas 14

这是这样一个微型的优化,你应该永远不会有,甚至考虑它.谈论绩效时常见的警告:

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

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


Dor*_*don 7

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

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

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

  • 我不知道,我的ARM系统没有EAX寄存器:) - 这里非常依赖系统的答案. (5认同)