gpt4 book ai didi

声明引用的 C++ 成本?

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:36 25 4
gpt4 key购买 nike

声明引用会导致运行时成本吗?

Typename a;    
auto& b=a;
func(b);

在循环内声明引用会导致多倍的运行时成本吗?

Typename a=Typename();//default constructor
for(int i=0;i<100;i++)
{
auto& b=a;
func(b);
}

或者

Typename a=Typename();//default constructor
auto& b=a;
for(int i=0;i<100;i++)
{
func(b);
}

更好?

最佳答案

在底层,引用通常是使用指针实现的——因此可能会产生额外的成本(指针的内存成本,以及取消引用操作的运行时成本)。但是,如果引用仅用作本地别名(如您在此处所做的那样),编译器能够完全优化它。

虽然这种行为可能取决于您的编译器和优化设置。对于您的具体示例:使用 GCC 5.2,在禁用优化的情况下,循环内的引用会生成额外的取消引用操作。但是,一旦您打开优化,它们都会生成相同的输出。

关于声明引用的 C++ 成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33794043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com