You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中仅返回输入参数的函数调用是否会被编译器优化?

空返回函数的编译优化与执行耗时分析
  • 关于编译器是否会忽略函数调用:
    这完全取决于编译器的优化等级和函数的属性。如果代码开启了常规优化(比如-O2或-O3级别),编译器会识别出simple_round只是原样返回参数,会直接把函数调用替换成参数本身,不会生成任何函数调用指令。但如果是关闭优化的编译模式(比如-O0),编译器会严格按照代码逻辑执行,生成完整的函数调用流程——包括栈帧创建、跳转执行函数、返回结果,哪怕函数内部没有实际运算。

  • 两行代码的执行耗时对比:

    • 开启优化时:line1和line2会被编译成完全相同的机器指令,执行耗时没有任何区别。
    • 关闭优化时:line1会多一次函数调用的额外开销,执行速度会比line2慢一点。
    • 特殊情况:如果给simple_round加上了阻止内联/优化的属性(比如GCC的__attribute__((noinline))),哪怕开启优化,编译器也会保留函数调用,这时候line1的耗时会明显高于line2。

内容的提问来源于stack exchange,提问作者Marcos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 13:57:28