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

C++ 返回常量的函数是否比void函数慢?,c++,performance,C++,Performance,突出区别的最简单示例: int foo() { doSomething(); return 0; } void bar() { doSomething(); return; } int main() { foo(); bar(); } bar比foo快吗?为什么?void会是..但仍然可以忽略不计 系统中的返回值通过x86上的eax寄存器传递。 在大多数系统中,它只是一个推入寄存器的过程,然后可能会在返回调用函数时创建对象。由于返回类似的内容只需向eax

突出区别的最简单示例:

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

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

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

bar
foo
快吗?为什么?

void会是..但仍然可以忽略不计

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


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

void将是..但它仍然可以忽略不计

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


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

< p>)这是一个微小的优化,你根本不需要考虑它。然而,在谈到性能时,通常要注意以下几点:

  • 重新测量
  • 换东西
  • 确保您了解您正在测量的内容,以及更改产生影响的原因
  • 用新的理解再修改一次,检查前提是否成立

作为返回一个小对象(登记在寄存器中的东西)的特定情况,成本将是可忽略的,基本上是大多数体系结构中登记的一个负担。

< P>这是一个微优化,你永远不必考虑它。然而,在谈到性能时,通常要注意以下几点:

  • 重新测量
  • 换东西
  • 确保您了解您正在测量的内容,以及更改产生影响的原因
  • 用新的理解再修改一次,检查前提是否成立

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

编程中还有许多其他因素会比这一点差异更影响性能。你为什么会这样想?测量一下,看看?请记住使用短语“在实验错误的范围内”…您可能注意到返回值命中的唯一时间是,如果返回是在堆栈上传递的某个大小的结构,并且该函数被调用了无数次,并且编译器无法将其内联。谢谢大家!因此,据我所知,字大小(正确?)类型可以返回,几乎没有性能损失。编程中有许多其他因素会比这一点差异更影响性能。你为什么会这样想?测量一下,看看?请记住使用短语“在实验错误的范围内”…您可能注意到返回值命中的唯一时间是,如果返回是在堆栈上传递的某个大小的结构,并且该函数被调用了无数次,并且编译器无法将其内联。谢谢大家!因此,据我所知,字大小(正确?)类型可以返回,几乎没有性能损失。我不知道,我的ARM系统没有EAX寄存器:)-这里的答案非常依赖于系统。很抱歉,我假设是x86,但它的意义仍然很小。我不知道,我的ARM系统没有EAX寄存器:)-这里的答案非常依赖于系统。很抱歉,我假设的是x86,但对于“确保您了解您正在测量的内容”来说,它几乎没有任何意义。
+1
:)哇-在这一点上没有饼干给您。虽然我猜你已经准备好了:)
+1
“确保你理解你正在测量的东西”:)哇-这一次你没有饼干吃。我想你已经够了:)