没有通过引用传递简单类型的原因?

时间:2012-05-26 23:03:23

标签: c++ performance

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

但是我找不到原因为什么它对性能有害,是因为c ++创建一个新的简单类型比它看起来变量或者什么是更快更快它?

4 个答案:

答案 0 :(得分:7)

如果你创建了一个引用,那就是:

pointer to memory location -> memory location

如果你使用一个值,那就是:

memory location

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

答案 1 :(得分:3)

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

Dave Abrahms的这篇优秀文章回答了你的所有问题,然后回答了一些问题:Want Speed? Pass by Value.

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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