优化函数内部参数的使用

时间:2016-10-03 15:01:44

标签: c++

在面试测试中,对于以下代码:

void GetPosition(dummyClass& a, dummyClass& b) {
    a = GetOrigin();
    b = a + GetAxis().ToForward() * distance;
}

采访者写了以下评论:

  

如果使用out参数返回值,则不要使用参数   在函数内部,编译器通常会写入变量   记忆并从记忆中读回来。使用本地堆栈   变量,这允许编译器更好地优化并且仅写入   绝对需要时将数据存储到内存中。

我从未听说过我应该避免在函数内部使用引用参数。这是做C ++时常见的做法,还是一些非常具体的优化?如果是这样,是否有一些我可以阅读的具体文件可以涵盖这种情况?

1 个答案:

答案 0 :(得分:0)

他是对的,但它非常微观优化。如果引用是局部变量,它们将在堆栈中非常接近并且可能仍然在缓存中,但它们可能是对远程堆对象的引用。

实际上你应该使用指针而不是引用返回,这样调用者可以立即看到值可能被写入。如果调用者想要丢弃值,则允许null是有意义的。因此,您自然会创建两个临时函数,然后在函数出口处保护指针写入,并使用null进行测试。