优化函数内部参数的使用

Kes*_*Max 9 c++

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

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

采访者写了以下评论:

如果使用out参数返回值,则不要使用函数内部的参数,编译器通常会将变量写入内存并从内存中直接读取.使用本地堆栈变量,这允许编译器更好地进行优化,并且只在绝对需要时才将数据写入内存.

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

Mal*_*ean 0

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

事实上,您应该使用指针而不是引用来返回,以便调用者可以立即看到该值可能会被写入。如果调用者想要丢弃这些值,则允许 null 是有意义的。因此,您自然会创建两个临时变量,然后在函数退出时通过空测试来保护指针写入。

  • 这难道不是一种微观悲观吗?不必要地使用额外的局部堆栈变量。 (2认同)