据我了解,您不应该在 c++ 中通过引用传递简单类型,因为它不会提高性能,甚至对性能不利(?)。至少那是我设法从网上收集到的。
但是我找不到它对性能不利的原因,是因为 c++ 创建一个新的简单类型比它查找变量要快还是它是什么?
据我了解,您不应该在 c++ 中通过引用传递简单类型,因为它不会提高性能,甚至对性能不利(?)。至少那是我设法从网上收集到的。
但是我找不到它对性能不利的原因,是因为 c++ 创建一个新的简单类型比它查找变量要快还是它是什么?
如果你创建一个引用,它是:
pointer to memory location -> memory location
如果你使用一个值,它是:
memory location
由于必须以任何一种方式(引用或值)复制值,因此通过引用传递不会提高性能;必须进行一次额外的查找。所以理论上它会“恶化”性能,但不会有任何你会注意到的程度。
这是一个很好的问题,而且你问它的事实表明你正在关注你的代码。然而,好消息是,在这种特殊情况下,有一个简单的出路。
Dave Abrahms 的这篇出色的文章回答了你所有的问题,然后回答了一些问题:想要速度吗?按值传递。
老实说,总结它并没有做到链接公正,这是一个真正的必读。但是,长话短说,您的编译器足够聪明,可以正确执行,如果您尝试手动执行,您可能会阻止编译器进行某些优化。
内部引用在指针处处理,每次访问它们时都需要取消引用。这显然需要额外的操作。
例如,在 32 位模式下,int
大小为 4 字节,int *
指针大小为 4 字节。直接传递 4 字节int
比传递 4 字节指针然后int
通过该指针加载更快。