8

据我了解,您不应该在 c++ 中通过引用传递简单类型,因为它不会提高性能,甚至对性能不利(?)。至少那是我设法从网上收集到的。

但是我找不到它对性能不利的原因,是因为 c++ 创建一个新的简单类型比它查找变量要快还是它是什么?

4

4 回答 4

7

如果你创建一个引用,它是:

pointer to memory location -> memory location

如果你使用一个值,它是:

memory location

由于必须以任何一种方式(引用或值)复制值,因此通过引用传递不会提高性能;必须进行一次额外的查找。所以理论上它会“恶化”性能,但不会有任何你会注意到的程度。

于 2012-05-26T23:07:26.483 回答
4

这是一个很好的问题,而且你问它的事实表明你正在关注你的代码。然而,好消息是,在这种特殊情况下,有一个简单的出路。

Dave Abrahms 的这篇出色的文章回答了你所有的问题,然后回答了一些问题:想要速度吗?按值传递。

老实说,总结它并没有做到链接公正,这是一个真正的必读。但是,长话短说,您的编译器足够聪明,可以正确执行,如果您尝试手动执行,您可能会阻止编译器进行某些优化。

于 2012-05-27T02:08:31.900 回答
0

内部引用在指针处处理,每次访问它们时都需要取消引用。这显然需要额外的操作。

于 2012-05-26T23:06:32.507 回答
0

例如,在 32 位模式下,int大小为 4 字节,int *指针大小为 4 字节。直接传递 4 字节int比传递 4 字节指针然后int通过该指针加载更快。

于 2012-05-26T23:06:40.667 回答