我正在使用可以在运行时启用/禁用报告的日志记录模块。电话通常是这样的:
WARN(
"Danger Will Robinson! There are "
+ boost::lexical_cast<string>(minutes)
+ " minutes of oxygen left!"
);
我正在为 WARN 使用内联函数,但我很好奇幕后进行了多少优化——评估整个程序中的参数会很昂贵。WARN
函数是这样的:
bool WARNINGS_ENABLED = false;
inline void WARN(const string &message) {
if (!WARNINGS_ENABLED) {
return;
}
// ...
}
鉴于构造字符串参数没有副作用,编译器会优化它吗?是否需要一定程度的优化(-Ox
在g++
某些情况下x
)?