gpt4 book ai didi

c++ - 通过引用将整数类型的变量传递给函数会比通过值更有效吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:15 25 4
gpt4 key购买 nike

我知道在将任何整型变量(如 int、double、long double 等)传递给函数时会这样说;它应该按值完成,但我很好奇,从组装点(性能方面或空间方面)来看,在传递大小大于 long double 之类的指针的整数类型变量时不会出现这种情况在我的平台上,它的大小为 8 个字节,并且比 4 个字节的指针更大;通过引用会更有效率吗?

最佳答案

将指针/引用传递给大于 native 指针大小的整数值可能是局部最优的,但很难说它是否是全局最优的。这在很大程度上取决于被调用者对该值的使用。如果它确实是一个整数并且被被调用者如此对待,那么在某个时刻,该值可能会被加载到一个或多个寄存器中(例如,为了让程序对这些值执行算术运算)被调用者取消引用指针的额外开销。如果被调用者被优化编译器内联,编译器可能会简单地传递跨两个寄存器的整数值。但是,如果被调用者不能被内联(例如,如果它是第三方 API 代码),那么编译器就不能执行这种内联,实际上传递指针可能更有效,尽管你不太可能找到函数库通过引用传递整数,除非这样被调用方可以修改调用方的值:这会引入一组完全不同的问题。

现代优化编译器通常会在考虑所有这些因素的情况下做出接近最佳的决策,程序员通常最好不要尝试抢占编译器过早的优化。事实上,这可能会导致效率较低的代码。

在绝大多数情况下,最明智的做法是以最能传达您的意图的方式编写代码(“值”类型的按值传递,除非参数是 - 采用 C# 术语 - 语义上一个“out”或“reference”参数)并且只有在存在明显的性能瓶颈时才担心效率。

关于c++ - 通过引用将整数类型的变量传递给函数会比通过值更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807502/

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