这很快:通过函数返回值或将值保存在参数/参数中

which is fast : returning a value by function OR saving the value in arguments/parameters

本文关键字:参数 保存 存在 很快 返回值 函数      更新时间:2023-10-16

>有人请告诉我以下哪一个更快,为什么?

int add(int a, int b){
     return a+b;
}

void add(int a, int *b){
     *b = a+(*b);
}

函数可能是内联的,并且两者都会产生相同的生成代码。

您不应该试图通过查看代码来猜测哪个更快,而应该分析正在考虑的选项,以查看其中一个是否比另一个更快,以及它是否真的有所不同。现在关于你的例子,我认为按值返回根本没有问题,因为现在大多数编译器都执行返回值和命名返回值优化,这是复制省略的形式。最重要的是,C++11引入了移动语义,这意味着在适用的情况下,数据从临时数据"移动"到目标。因此,实际上,按值返回可能会更快,因为您不必检查输入。

有关

按值传递的相关讨论,请参阅此处,有关相关问题,请参阅此处。

返回值不太可能比保存值慢,因为值通常在寄存器中返回(如果 CPU 有一个累加器并且返回值适合),则通常是累加器)。