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

C++中传递const long double类型参数时使用引用是否合适?

long double 传 const 引用和传值的效率差异分析

你给出的代码片段如下:

typedef long double Real;
void func(const Real& x, const Real &y);

这个问题没有绝对的标准答案,要结合运行平台、调用约定和编译优化情况判断:

  • 常规x86_64平台下,80位long double通常按128位对齐存储,大小确实比64位指针(8字节)大,但这不代表传引用一定效率更高:主流x86_64调用约定中,浮点参数会通过XMM或x87寄存器传递,引用作为指针走通用寄存器传递。当参数数量少、能全部通过寄存器传递时,传值的开销反而更低:传引用拿到地址后需要多一次内存解引用才能读取值,传值可以直接使用寄存器中的数据,没有额外访存开销。
  • 只有当参数数量超过寄存器传递阈值、需要通过栈传递参数时,传递128位long double的开销才会高于传8字节指针,这时候传引用才有明显的效率优势。
  • 如果开启了链接时优化(LTO)或者函数被内联,两种写法的差异会被编译器完全抹平,不会产生性能区别。

实际使用建议

这类底层参数传递的性能差异非常微小,绝大多数业务场景下完全感知不到,不需要为此过度纠结。如果是性能敏感的热点函数,可以基于实际压测结果选择传递方式,优先遵循团队统一编码规范即可,可读性的优先级远高于这种可忽略的性能差异。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:54:04