1. ホーム
  2. c++

[解決済み] const-correctnessはパフォーマンスを向上させるか?

2023-01-01 20:07:18

質問

C や C++のコードで const-correctness を強制することは、保守性に関して良い習慣であるだけでなく、コンパイラが最適化を実行できるようになるかもしれないと何度も読んだことがあります。しかし、私は全く逆のことも読みました。つまり、それはパフォーマンスにまったく影響を与えないということです。

したがって、プログラムのパフォーマンスを向上させるために、const correctness がコンパイラの助けになるような例はありますか?

どのように解決するのですか?

const 正しさがパフォーマンスを向上させることはできないので const_castmutable は言語内に存在し、コードが規則を規則的に破ることを可能にします。これは C++11 でさらに悪化し、あなたの const へのポインタである場合があります。 std::atomic へのポインタである可能性があり、コンパイラは他のスレッドによってなされた変更を尊重しなければならないことを意味します。

とはいえ、コンパイラが生成したコードを見て、それが実際に与えられた変数に書き込まれているかどうかを判断し、それに応じて最適化を適用するのは些細なことです。

とはいえ、すべて const の正しさは 良い というのは、保守性に関して良いことです。さもなければ、あなたのクラスのクライアントがそのクラスの内部メンバを壊してしまうかもしれません。例えば、標準的な std::string::c_str() -- もしこれが const 値を返せなかったら、文字列の内部バッファをいじくりまわすことができるようになります!

を使わないでください。 const はパフォーマンス上の理由で使わないでください。保守性の理由から使用してください。