gpt4 book ai didi

只返回输入参数的C函数

转载 作者:行者123 更新时间:2023-12-05 01:50:23 25 4
gpt4 key购买 nike

由于我无法控制的原因,我必须在我的 C 代码中实现此函数:

double simple_round(double u)
{
return u;
}

当这个函数被调用时,编译器会忽略它,还是调用仍然发生?例如:

int y;
double u = 3.3;

y = (int)simple_round(u*5.5); //line1
y = (int)u*5.5; //line2

两行代码的执行时间会相同,还是第一行代码会花费更长的时间?

最佳答案

由于该函数是在与其使用位置不同的 C 文件中定义的,因此如果不使用链接时优化,当编译器调用该函数时,它不会知道调用的内容是什么函数确实如此,因此它必须实际编译函数调用。该函数可能只有两条指令:将参数复制到返回值,然后返回。

额外的函数调用可能会也可能不会减慢程序速度,具体取决于 CPU 的类型以及 CPU 正在执行的其他操作(附近的其他指令)

它还会迫使编译器考虑它可能正在调用一个非常复杂的函数,该函数会覆盖大量寄存器(无论函数调用允许覆盖哪个寄存器);这将使调用它的函数中的寄存器分配变得更糟,可能会使该函数更长并需要进行更多的内存访问。

关于只返回输入参数的C函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73168591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com