据我所知,你不应该在c ++中通过引用传递简单类型,因为它不会提高性能,甚至对性能有害(?)。至少那是我设法从网上收集的。
但是我找不到原因为什么它对性能有害,是因为c ++创建一个新的简单类型比它看起来变量或者什么是更快更快它?
答案 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
更快。