Ваш первый вопрос был задан @ Ted_Lyngmo
Если вы действительно сомневаетесь в производительности (и измерения подтверждают, что эта функция является вашей горячей точкой), std::string
в этом случае слишком тяжел.Он не допускает всех оптимизаций времени компиляции, таких как constexpr
Я предлагаю использовать std::string_view
#include <string_view>
constexpr std::string_view print(const bool condition) {
if (condition){
return "This is relevant info";
} else {
return "This is irrelevant info";
}
}
int main() {
std::string_view info = print(false);
return info.size();
}
Эта программа будет полностью оптимизированаот
main:
mov eax, 23
ret
Если вы используете print(true)
, он изменится на
main:
mov eax, 21
ret
Таким образом, также, если вы будете использовать предложение позже, оно будет лучше всего оптимизировано компилятором.
Примечание. Вы можете использовать string_view , только если у вас есть компилятор C ++ 17.