我正在使用一个日志模块,可以在运行时启用/禁用报告功能。通常的调用大致如下:
WARN(
"Danger Will Robinson! There are "
+ boost::lexical_cast<string>(minutes)
+ " minutes of oxygen left!"
);
我在使用内联函数来进行警告,但是我很好奇后台有多少优化——在整个程序中评估参数将会非常昂贵。 WARN
函数大致如下:
bool WARNINGS_ENABLED = false;
inline void WARN(const string &message) {
if (!WARNINGS_ENABLED) {
return;
}
// ...
}
考虑到构造字符串参数没有副作用,编译器是否会将其优化掉?是否需要一定程度的优化(例如在某些情况下需要使用-Ox
参数)?