突出差异的最简单示例:
int foo()
{
doSomething();
return 0;
}
void bar()
{
doSomething();
return;
}
int main()
{
foo();
bar();
}
bar
比foo
更快,为什么?
答案 0 :(得分:14)
这是一种微观优化,您从不甚至不得不考虑它。然而,在谈论表演时常见的警告:
在返回一个小对象(适合寄存器的东西)的特殊情况下,成本可以忽略不计,基本上是大多数架构中寄存器的负载。
答案 1 :(得分:7)
无效将是......但仍然可以忽略不计。
系统中的返回值通过x86上的eax寄存器传递。 在大多数系统中,它只是推入寄存器,然后在返回调用函数时创建对象。并且因为返回这样的东西只会将0发布到eax,这可能是一个较少的汇编命令,因为void可能不会调用它,并且当它返回到调用函数时不需要分配int。
无论哪种方式,这都不会提高您编写的任何应用程序的性能。如果您遇到性能问题,请查看其他位置:)