【发布时间】:2010-09-21 21:48:03
【问题描述】:
我正在使用可以在运行时启用/禁用报告的日志记录模块。调用通常是这样的:
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;
}
// ...
}
鉴于构造字符串参数没有副作用,编译器会优化它吗?是否需要一定程度的优化(g++ 中的 -Ox 用于某些 x)?
【问题讨论】:
标签: c++ optimization compiler-construction arguments