実行時にレポートを有効/無効にできるロギング モジュールを使用しています。通話は通常、次のようになります。
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
?