誰か、次のうちどれがより高速で、その理由を教えてください??
int add(int a, int b){
return a+b;
}
また
void add(int a, int *b){
*b = a+(*b);
}
関数がインライン化され、どちらも同じ生成コードになる可能性があります。
コードを見てどちらが速いかを推測しようとするのではなく、検討中のオプションをプロファイリングして、一方が他方よりも速いかどうか、そしてそれが実際に違いを生むかどうかを確認してください。あなたの例については、最近のほとんどのコンパイラが戻り値と名前付き戻り値optimzationを実行するため、値で返すことはまったく問題ないと思います。これはコピー省略の形式です。その上、C++11 では移動セマンティクスが導入されています。つまり、該当する場合、データは一時データからターゲットに「移動」されます。したがって、実際には、入力をチェックする必要がないため、値で返す方が速い場合があります。
値は通常レジスタに返されるため、値を返すのが保存よりも遅くなる可能性はほとんどありません(通常、CPUにアキュムレータがあり、戻り値が収まる場合はアキュムレータ)。