首页 > 后端开发 > C++ > 按值传递或引用传递:'想要速度?按值传递”何时真正成立?

按值传递或引用传递:'想要速度?按值传递”何时真正成立?

Susan Sarandon
发布: 2024-10-26 18:08:03
原创
416 人浏览过

  Passing by Value or Reference: When Does

“想要速度?按值传递”的性能影响

“想要速度?按值传递”原则建议通过value 有时可以通过允许编译器优化复制过程来提高性能。然而,这一原则引发了讨论和反驳。

对于具有字符串成员的结构 X 和 Y,行为有所不同:

  • X: 使用副本从参数构造一个临时对象,然后将其移动到成员变量中。如果参数是右值,返回值优化 (RVO) 可能会消除复制。
  • Y: 将常量引用绑定到参数,但仍将字符串复制到成员变量中。

因此,将右值传递给 X 可能只会导致一次移动,而将其传递给 Y 则始终需要一个副本。

一般来说,按值传递可能会比按值传递表现得更好通过右值的引用传递,但与通过左值的引用传递相当。这是因为移动通常在时间上与传递指针相当(如引用的情况)。

但是,重要的是要注意这一原则不是硬性规则,应在具体情况下考虑视具体情况而定。分析可以为不同传递机制的实际性能影响提供有价值的见解。

此外,按值传递对象也有缺点,例如在处理大型对象时会增加内存使用量和潜在的性能下降。因此,在做出此决定时应仔细评估权衡。

以上是按值传递或引用传递:'想要速度?按值传递”何时真正成立?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板