Я использую модуль журналирования, в котором можно включать/отключать создание отчетов во время выполнения. Обычно звонки выглядят примерно так:
Код: Выделить всё
WARN(
"Danger Will Robinson! There are "
+ boost::lexical_cast(minutes)
+ " minutes of oxygen left!"
);
Я использую встроенную функцию для WARN, но мне любопытно, какая оптимизация происходит за кулисами — оценка аргументов на протяжении всего процесса программа будет дорогостоящей. Функция WARN выглядит примерно так:
Код: Выделить всё
bool WARNINGS_ENABLED = false;
inline void WARN(const string &message) {
if (!WARNINGS_ENABLED) {
return;
}
// ...
}
Учитывая, что построение строкового аргумента не имеет побочных эффектов, оптимизирует ли компилятор его? Требуется ли определенный уровень оптимизации (
в g++ для некоторого x)?
Подробнее здесь:
https://stackoverflow.com/questions/282 ... -arguments