Что является более эффективным: вернуть значение вместо передачи по ссылке?

В настоящее время я изучаю, как написать эффективный код на C ++, и в связи с вызовами функций возникает вопрос. Сравнивая эту функцию псевдокода:

not-void function-name () {
    do-something
    return value;
}
int main () {
    ...
    arg = function-name();
    ...
}

с этой иначе идентичной функцией псевдокода:

void function-name (not-void& arg) {
    do-something
    arg = value;
}
int main () {
    ...
    function-name(arg);
    ...
}

Какая версия более эффективна и в каком отношении (время, память и т. Д.)? Если это зависит, то когда первый будет более эффективным, а когда более эффективным будет второй?

редактироватьДля контекста этот вопрос ограничен аппаратно-независимыми платформами и большей частью программным обеспечением. Есть ли машинно-независимая разница в производительности?

редактироватьЯ не вижу, как это дубликат. Другой вопрос - сравнение передачи по ссылке (предыдущий код) с передачей по значению (ниже):

not-void function-name (not-void arg)

Что не то же самое, что мой вопрос. Я не сосредотачиваюсь на том, какой способ лучше передать аргумент функции. Я сосредоточен на том, какой способ лучше пройтииз результат для переменной из области видимости.

Ответы на вопрос(7)

Ваш ответ на вопрос