В настоящее время я изучаю, как писать эффективный код на С++, и по поводу вызовов функций возникает вопрос. Сравнивая эту псевдокодную функцию:
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)
Это не то же самое, что мой вопрос. Мое внимание не относится к тому, что является лучшим способом передать аргумент функции. На мой взгляд, это лучший способ передать результат out для переменной из внешней области.