返回函数比非返回函数有更多的性能开销吗?

问题描述 投票:1回答:1

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

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

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

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

c performance processing-efficiency memory-efficient
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.