返回函数是否​​比非返回函数具有更多的性能开销?

时间:2019-10-14 08:03:09

标签: c performance processing-efficiency memory-efficient

我处于从函数返回值是可选的情况。因此,无论我返回还是不返回在逻辑上都没有区别,但是我可以安全地假设相同的性能吗?

我的意思是,当我们使用返回Int的函数返回某个值(例如:void)的函数时,会有任何性能开销(时间或内存)

这是一个虚拟项目,出于我的好奇心提出了这个问题。

1 个答案:

答案 0 :(得分:1)

这取决于使用的ABI以及是否内联被调用函数。

在带有System V Application Binary Interface AMD64的x86_64平台上(Linux,Linux,FreeBSD,macOS,Solaris和Windows子系统),最多返回sizeof的16个字节的值在寄存器中返回。返回最多16个字节涉及将返回值加载到一个或两个8字节寄存器中。返回较大的值涉及通过传递给被调用方的隐藏的返回值指针将数据存储到调用方的堆栈中,返回时还必须将其装入rax寄存器中。

有关调用约定的详细信息,请参见Calling conventions by Agner Fog,尤其是第7.1节“传递和返回对象”。在寄存器中传递SIMD类型有单独的调用约定。