gpt4 book ai didi

c++ - 为变量创建本地别名会增加开销吗?

转载 作者:太空狗 更新时间:2023-10-29 23:07:31 25 4
gpt4 key购买 nike

考虑以下情况

void func(const A& a)
{
//Case 1:
const int& val = a->b->c->d;
func1(val);
func2(val);

//Case 2:
func1(a->b->c->d);
func2(a->b->c->d);

//Case3:
int val = a->b->c->d;
func1(val);
func2(val);
}

w.r.t 可读性,Case3 是最直接的

w.r.t 速度,对于一个像样的编译器,以上所有情况都等价吗?如果不是,它们中哪个最快和最慢?

假设所有指针都是原始指针,并且它们指向堆中的对象。

更新:假设参数是一个 const 参数,如上所示,因此 func1 和 func2 可以通过值或 const 引用来获取参数。

最佳答案

假设两个函数都按值获取参数,情况 3 至少与情况 1 一样快,而情况 1 至少与情况 2 一样快。

正如 ruakh 在评论中提到的,在优化发生之前需要进行一些复杂的数据流分析。

如果函数参数是引用,那么值的最终内存加载可能永远不会发生。那么情况 1 将是最快的。

如果这些是宏而不是函数,那么所有的赌注都没有了。

关于c++ - 为变量创建本地别名会增加开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645770/

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