2

突出差异的最简单示例:

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

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

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

bar比 快foo,为什么?

4

2 回答 2

15

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

  • 措施
  • 再次测量
  • 改变些什么
  • 措施
  • 确保您了解所测量的内容以及更改产生影响的原因
  • 用新的理解再修改一下,检查前提是否成立

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

于 2013-05-20T16:46:32.257 回答
7

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

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

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

于 2013-05-20T16:44:37.743 回答